正确等待所有结算的方式

时间:2015-09-23 04:55:05

标签: javascript angularjs promise q

我需要等到所有承诺都被解决或拒绝,然后再执行回调。似乎当{1}}的当前实现在一个承诺被拒绝时触发回调,这是测试:

Q

我如何实现我的目标?

1 个答案:

答案 0 :(得分:3)

如果您想知道所有承诺何时完成(已完成或已拒绝),您可以使用$q.allSettled()代替$q.all()

如果您想知道哪些承诺被拒绝,您将必须遍历返回的结果以查询哪些承诺被拒绝。 Q doc有$q.allSettled()的示例用法。

从Q文档中复制:

Q.allSettled(promises)
.then(function (results) {
    results.forEach(function (result) {
        if (result.state === "fulfilled") {
            var value = result.value;
        } else {
            var reason = result.reason;
        }
    });
});