【发布时间】:2017-04-12 14:20:23
【问题描述】:
鉴于以下
Promise.all(promises).then(resolved => {
...
}).catch(rejected => {
...
});
rejected 只会包含第一个被拒绝的承诺。有没有办法捕获所有被拒绝的承诺?
【问题讨论】:
-
个别来说,是的,但不是 .all。正如您所发现的,第一个被拒绝的承诺抛出了问题;它不会等待他们全部完成。您将不得不遍历每个 promise 并将 catch 处理程序附加到每个 promise,然后以某种方式确定它们何时全部完成(因为 .all 在那时将毫无用处)
-
rejected不会包含第一个被拒绝的承诺——它将包含它被拒绝的原因。 -
另请参阅this question,了解如何使用 Bluebird 治疗这种情况。检查使事情变得更容易。
-
@naomik 我猜你可以保留你的答案,尽管它会归结为重写它,基于
Promise.settle或 like this 的reconcile。您可以保留第一部分中的示例,以及“这有何不同”部分。
标签: javascript ecmascript-6 es6-promise