javascript – 是否有可能在Promise.all中捕获所有被拒绝的承诺?

参见英文答案 > Wait until all ES6 promises complete, even rejected promises                                    15个
鉴于以下内容

Promise.all(promises).then(resolved => {
    ...
}).catch(rejected => {
    ...
});

被拒绝只会包含被拒绝的第一个承诺.有没有办法捕捉所有被拒绝的承诺?

最佳答案
当然,这样做需要等到所有输入承诺都已解决.只要有一个待定,可能会拒绝,你就不能确定你有所有的拒绝!

所以你可以使用Promise.all,但是在转换输入promises以便捕获拒绝并识别它们之后,可能将它们包装在Error对象中,如

caughtPromises = promises.map(promise => promise.catch(Error));

现在过滤Promise.all的结果,找到被识别为失败的那些:

Promise.all(caughtPromises)
  .then(results => results.filter(result => result instanceof Error))

etvoilà.

转载注明原文:javascript – 是否有可能在Promise.all中捕获所有被拒绝的承诺? - 代码日志