让我们说一下我要检查的物品清单。如果一项无效,我想退出.every函数。查找定义可以在元素中的任何一个返回false时退出。但是当检查的函数使用回调时,如何实现这种行为?
resultList.every(function (item) {
return doCheck(item)
});
doCheck(item){
_checkDBforValidEntry(item, function (err) {
if (err) {
return false;
}else{
return true;
}
});
}
这是一个简单(也许不完整)的示例,但它演示了我的问题。这似乎不符合我的预期。陈述是否错误?这是一个根本不起作用的星座吗?如何解决此问题?
Promisify doCheck
,然后使用Promise.all
,它会在一次迭代出现错误时立即抛出:
const doCheck = (item) => new Promise((resolve, reject) => {
_checkDBforValidEntry(item, function (err) {
if (err) {
reject();
}else{
resolve();
}
});
};
Promise.all(resultList.map(doCheck))
.then(() => {
// Everything successful
})
.catch(() => {
// At least one failure
});