如何拒绝 _.each 循环中的 promise ,它永远不会到达 document.write('Failed');
。 lodash中有没有更好的函数来处理这种情况。
function check(){
return Promise
.all(
[
Promise.resolve([1,3,4]),
Promise.resolve([0,4,3]),
Promise.resolve(undefined)
]).then(function(results){
return _.each(results, function(result){
return _.each(result, function(value) {
// should reject when value is 0
if(!value){
return Promise.reject();
}
});
});
});
}
check().then(function(){
document.write('All Success');
}, function(){
// Never reaching this code.. :(
document.write('Failed');
});
最佳答案
没有理由在 then
回调中创建一个新的 Promise 并返回它。 Promise 的目的是允许您以更“类似同步”的方式编写异步代码。您想要在 then
回调中执行的操作是抛出错误:
function check(){
return Promise
.all(
[
Promise.resolve([1,3,4]),
Promise.resolve([0,4,3]),
Promise.resolve(undefined)
]).then(function(results){
return _.each(results, function(result){
return _.each(result, function(value) {
// should reject when value is 0
if(!value){
throw new Error();
}
});
});
});
}
check().then(function(){
document.write('All Success');
}, function(){
// Never reaching this code.. :(
document.write('Failed');
});
这将导致 promise 链中的拒绝。
关于javascript - 如何在 _.each 循环中拒绝 Promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46089741/