javascript - 如何在 _.each 循环中拒绝 Promise

标签 javascript promise lodash

如何拒绝 _.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');
    });

这是plnkr.co link

最佳答案

没有理由在 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/

相关文章:

javascript - 无法从 angular.forEach 循环内更新全局变量

javascript - Angular - 在多个文件中定义模块

javascript - 如何从方括号内的对象解析字符串

javascript - 如何在nodejs中同时运行两个promise并一一失败

javascript - 函数参数在 return new Promise(function(resolve,reject) 内不可见

javascript - 如何在 GraphQL 中返回字符串数组

javascript - 在拖动时限制固定列宽

javascript - jquery - 当一系列 promise 成功时运行回调

angularjs - 错误 TS2339 : Property 'endsWith' does not exist on type 'string'

javascript - 有条件地从数组中删除重复项