使用嵌套回调处理异步瀑布时出错

时间:2016-07-01 06:31:09

标签: javascript node.js callback async.js

我在async.waterfall( [] , function() )内使用async.parallel。代码如下:

async.waterfall(
  [
    function first(callback) {
      //some processing
      callback();
    },
    function second(result, callback) {
      //Here i query the db
      model.findAll()
        .then(function(success) {
          async.parallel(
            [array_of_functions],
            function done(err, result) {
              if (err) {
                callback(err);
              }
            }
          )
        })
        .catch(function(err) {
          callback(err);
        })
    }
  ],
  function done(err, result) {
    if (err) {
      throw new Error(err);
    }
  }
)

有时我在控制台上收到错误:

  

已经调用了回调

错误消息告诉多次调用回调。我认为callback(err)async.parallel()内的.catch()会同时被调用。 这实质上意味着如果发生错误 INSIDE .then(),它会被.catch()捕获。这是怎么回事?其次,如果我希望将嵌套回调中的错误传播到done()的最终async.waterfall()函数,我该怎么做呢。

0 个答案:

没有答案