相关疑难解决方法(0)

异步执行多个任务并在JavaScript函数中返回第一个成功结果

我必须编写一个javaScript函数,将一些数据返回给调用者.

在该函数中,我有多种方法来检索数据,即

  1. 从缓存中查找
  2. 从HTML5 LocalStorage中检索
  3. 从REST后端检索(奖励:将新数据放回缓存中)

每个选项可能需要自己的时间来完成,它可能会成功或失败.

我想要做的是,异步/并行地执行所有这三个选项,并返回先返回的结果.

我理解JavaScript中不可能并行执行,因为它是单线程的,但我想至少异步执行它们并取消其他任务,如果其中一个返回成功结果.

我还有一个问题.

提前返回并继续执行JavaScript函数中的剩余任务.

伪代码示例:

function getOrder(id) {

    var order;

    // early return if the order is found in cache.
    if (order = cache.get(id)) return order;

    // continue to get the order from the backend REST API.
    order = cache.put(backend.get(id));

    return order;
}
Run Code Online (Sandbox Code Playgroud)

请建议如何在JavaScript中实现这些要求.

到目前为止发现的解

  1. 最快的结果

    JavaScript ES6解决方案

    参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

Promise.race(迭代器)

返回在iterable中的第一个promise解析时解析的promise.

var p1 = new Promise(function(resolve, reject) { setTimeout(resolve, 500, "one"); });
var p2 = new Promise(function(resolve, reject) { setTimeout(resolve, …
Run Code Online (Sandbox Code Playgroud)

javascript java groovy promise angularjs

6
推荐指数
2
解决办法
1473
查看次数

标签 统计

angularjs ×1

groovy ×1

java ×1

javascript ×1

promise ×1