gpt4 book ai didi

javascript - 使用 Q.allSettled 时 Q.fail 不起作用

转载 作者:搜寻专家 更新时间:2023-11-01 00:24:12 24 4
gpt4 key购买 nike

使用Q.allSettled时,无法使用Q.fail获取错误。

如果我有 promises,其中包含最终被拒绝的 promise,则此代码永远不会进入 .fail block

Q.allSettled(promises)
.then(function () {
// Handle success
})
.fail(function (err) {
console.log('IN ERRR', err);
});
});

.allSettled 的文档以这个为例:

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

.allSettled 函数不会进入 .fail block ,这是预期的行为吗?

最佳答案

是的,.allSettled() 返回的 promise 由所有结果的数组实现,无论它们是实现还是拒绝。

如果返回的 promise 以某种方式导致进入 .then() 处理程序 .fail() 处理程序,那么这将导致一些相当困惑的程序流程,并且会违反 promise 契约(Contract)。

不过,如果你愿意,你可以这样做:

Q.allSettled(promises)
.then(function (results) {
results
.filter(function (result) {
return result.state === "fulfilled";
})
.forEach(function (result) {
// handle each success
});

throw results.filter(function (result) {
return result.state !== "fulfilled";
});
})
.fail(function (err) {
console.log('IN ERRR', err);
});

关于javascript - 使用 Q.allSettled 时 Q.fail 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28997502/

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