async.waterfall回调的重点是什么?

时间:2014-08-12 17:53:20

标签: node.js

在node.js模块async中有一个名为waterfall https://github.com/caolan/async#waterfalltasks-callback

的方法

我很困惑为什么有一个带有描述的可选回调

  

运行系列的任务数组

如果函数按顺序执行,那么添加回调似乎没有意义,那么序列中的最后一个函数就是最后一个。是不是喜欢读故事然后说“结束,结束”

它也像垃圾一样将回调传递到整个函数链。

有什么实际意义吗??

1 个答案:

答案 0 :(得分:1)

是;如果其中一个数组函数失败并使用非空err回调,那么将跳过该数组的其余部分,并且执行流程将错误发送到该第二个函数。否则,将使用结果调用第二个函数。

当然,如果确保没有错误,并且整个数组确实执行,那么理论上第二个函数可以包含在原始数组中而没有副作用。但是,这打破了Node.JS中异步范例的共性。

例如:

async.waterfall([
  function(callback) { // Runs, of course
    callback();
  }, function(callback) { // Also runs
    callback('error!');
  }, function(callback) { // Never runs
    callback();
  }], function(err) {
    console.log(err);
  });