javascript - 是否有可能在 Promise.all 中捕获所有被拒绝的 promise ?

标签 javascript ecmascript-6 es6-promise

<分区>

鉴于以下

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

rejected 将只包含第一个被拒绝的 promise 。有没有办法捕获被拒绝的所有 promise ?

最佳答案

当然,这样做需要等到所有输入 promise 都已解决。只要有一个处于待处理状态,它可能会被拒绝,您就无法确定是否收到了所有拒绝!

因此您可以使用 Promise.all,但在转换输入 promise 以便捕获拒绝并识别它们之后,也许通过将它们包装在 Error 对象中,如在

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

现在过滤 Promise.all 的结果以找到标识为失败的结果:

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

等等。

关于javascript - 是否有可能在 Promise.all 中捕获所有被拒绝的 promise ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40851454/

相关文章:

javascript - C3.js百分号输入法

javascript - 从 HTML 文件中的脚本标签导入 js。可能的?

javascript - ( react )在谷歌地图上打开模式标记点击

javascript - 如何在 bulkwrite 的 for 循环中设置异步/等待?

javascript - BackstopJS 的高级场景

javascript - window.location.hash 总是显示为空

javascript - 当自定义参数从子组件获取数据时,如何在 React 中传递除了您自己的自定义参数之外的事件参数

javascript - 如何使用异步或 promise 通过 setTimeout 添加随机延迟

javascript - Node.js:返回原始 Promise 与新 Promise 实例

javascript - Jquery,JavaScript slider