Javascript Q.使用Q.ALLSELD时失败不工作
使用Javascript Q.使用Q.ALLSELD时失败不工作,javascript,node.js,q,Javascript,Node.js,Q,使用Q.allsolited时,我不能使用Q.fail获取错误 如果我有承诺,其中包含一个最终被拒绝的承诺,则此代码永远不会进入.fail块 Q.allSettled(promises) .then(function () { // Handle success }) .fail(function (err) { console.log('IN ERRR', err); }); }); .allsolited的文档以此为例: Q.
Q.allsolited
时,我不能使用Q.fail
获取错误
如果我有承诺
,其中包含一个最终被拒绝的承诺,则此代码永远不会进入.fail
块
Q.allSettled(promises)
.then(function () {
// Handle success
})
.fail(function (err) {
console.log('IN ERRR', err);
});
});
.allsolited
的文档以此为例:
Q.allSettled(promises)
.then(function (results) {
results.forEach(function (result) {
if (result.state === "fulfilled") {
var value = result.value;
} else {
var reason = result.reason;
}
});
});
.allsolited
函数的这一预期行为是否不会进入.fail
块?是的,.allsolited()
返回的承诺通过一个包含所有结果的数组来实现,无论这些结果是满足还是拒绝
如果返回的承诺以某种方式导致进入.then()
处理程序和.fail()
处理程序,那么这将导致一些相当混乱的程序流,并违反承诺契约
如果您愿意,您可以这样做,不过:
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);
});