gpt4 book ai didi

javascript - 等待所有解析的正确方法

转载 作者:行者123 更新时间:2023-11-28 19:00:15 25 4
gpt4 key购买 nike

我需要等到所有 promise 都得到解决或拒绝,然后才执行回调。看起来Q的当前实现一旦一个promise被拒绝就会触发回调,这是测试:

var ps = [];
var d1 = $q.defer();
var d2 = $q.defer();
ps.push(d1.promise, d2.promise);

setTimeout(function () {
d1.reject()
}, 2000)

setTimeout(function () {
d2.resolve()
}, 5000)

$q.all(ps).then(function () {
// is not triggered
}).catch(function () {
//triggered after 2000 ms, I need this triggered after 5000ms
})

如何才能实现我想要的目标?

最佳答案

如果您想知道所有 Promise 何时完成(履行或拒绝),您可以使用 $q.allSettled() 而不是 $q.all() )。

如果您想知道哪些 Promise 被拒绝,则必须迭代返回的结果来查询哪些 Promise 被拒绝。 Q 文档有一个 $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;
}
});
});

关于javascript - 等待所有解析的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32731227/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com