我有两个承诺,一个可能很慢,另一个会更快。我理解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);
});
}
答案 0 :(得分:2)
这可能有用:
Promise.race(iterable)方法返回一个解析或的promise 一旦可迭代中的一个承诺解决或拒绝,就拒绝 拒绝承诺,具有该承诺的价值或理由。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/race