如何同时运行两个承诺并在nodejs中一个接一个地失败

How to run two promises in the same time and fail one by one in nodejs

本文关键字:一个 失败 nodejs 承诺 运行 何同时 两个      更新时间:2023-09-26

我有两个承诺,一个可能很慢,另一个会更快。我知道Promise.all是全部或全无,所以当慢速超时时,它会导致另一个也不显示结果。无论如何,我可以同时运行两个承诺,如果慢速承诺失败,我仍然可以从快速承诺中获取结果而无需进行大量回调?

我用谷歌搜索,似乎找不到一个例子

  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);
  });
}

这可能很有用:

Promise.race(iterable) 方法返回一个承诺,该承诺解析或 一旦可迭代对象中的一个承诺解析或 拒绝,以及该承诺的价值或理由。

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