我需要等到所有承诺都被解决或拒绝,然后再执行回调。似乎当{1}}的当前实现在一个承诺被拒绝时触发回调,这是测试:
Q
我如何实现我的目标?
答案 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;
}
});
});