Node.js 瀑布回调的意义是什么?

Node.js 瀑布回调的意义是什么?,node.js,Node.js,在node.js模块async中有一个名为瀑布的方法 我不明白为什么会有一个带有描述的可选回调 按系列运行函数的任务数组 添加回调似乎毫无意义,如果函数按顺序执行,那么序列中的最后一个函数就是最后一个。这不就像读一个故事然后说“结束,结束” 它还可以像垃圾一样将回调向下传递到整个函数链中 这有什么实际意义吗?是的;如果其中一个数组函数失败,并使用非空的err进行回调,则跳过该数组的其余部分,执行流将与该错误的第二个函数短路。否则,将使用结果调用第二个函数 当然,如果保证没有错误,并且整个数组都执

在node.js模块async中有一个名为瀑布的方法

我不明白为什么会有一个带有描述的可选回调

按系列运行函数的任务数组

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

它还可以像垃圾一样将回调向下传递到整个函数链中


这有什么实际意义吗?

是的;如果其中一个数组函数失败,并使用非空的
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);
  });

那么你会说它是用来调试的吗?一点也不;您应该始终检查程序中的错误。如果某个操作失败,例如文件读/写操作,那么您需要了解它—无论是在开发环境中还是在生产环境中。这就是错误回调的原因。