如何在同一时间运行两个promise并在nodejs中逐个失败

时间:2016-03-10 15:56:15

标签: javascript node.js promise bluebird

我有两个承诺,一个可能很慢,另一个会更快。我理解Promise.all是全有或全无,所以当慢一个超时它导致另一个也不显示结果时。无论如何我可以在同一时间运行两个Promise,如果慢速失败,我仍然可以从快速的那个中获得结果而不需要做很多回调吗?

我用Google搜索,我似乎找不到

的例子
  var pList = [slowQuery({url: url}), fastQuery({url: url})];

  Promise.all(pList).then(function doneFunc(results) {
    output.slow = results[0];
    output.fast = results[1];
    window.respond(output);
  }).catch(function errFunc() {
    output.slow = [];
    output.fast = [];
    window.respond(output);
  });
}

1 个答案:

答案 0 :(得分:2)

这可能有用:

  

Promise.race(iterable)方法返回一个解析或的promise   一旦可迭代中的一个承诺解决或拒绝,就拒绝   拒绝承诺,具有该承诺的价值或理由。

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