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

标签 javascript node.js promise bluebird

我有两个 promise ,一个可能会很慢,另一个会更快。我知道 Promise.all 要么全有,要么全无,因此当慢速超时时,它会导致另一个也无法显示结果。无论如何,我是否可以同时运行两个 Promise,并且如果慢速的 Promise 失败,我仍然可以从快速的 Promise 中获取结果,而无需进行大量回调?

我用谷歌搜索,似乎找不到

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

最佳答案

这可能有用:

The Promise.race(iterable) method returns a promise that resolves or rejects as soon as one of the promises in the iterable resolves or rejects, with the value or reason from that promise.

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

关于javascript - 如何在nodejs中同时运行两个promise并一一失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35921320/

相关文章:

javascript - JS - 创建新 worker 导致 404

javascript - 将 AJAX JSON 对象复制到现有对象中

node.js - 错误 : Cannot find module, Nodemon 崩溃

mysql - 单个 api 中的多个查询

javascript - 如何正确地使预加载器成为页面

javascript - 解决未决的并行 promise

javascript - 有没有办法短路异步/等待流程?

javascript - grails gsp radiogroup,如何为每个输入单选字段设置 id

javascript - 为什么 React 代码可以正常运行而没有任何错误?

javascript - Promise 无法解析正确的值