【问题标题】:async.waterfall what is the point of the callback?async.waterfall 回调的意义何在?
【发布时间】:2014-08-13 01:56:32
【问题描述】:

在 node.js 模块 async 中有一个方法叫做瀑布 https://github.com/caolan/async#waterfalltasks-callback

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

连续运行tasks数组

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

此外,将回调向下传递到整个函数链似乎也像垃圾一样。

有什么实际意义吗??

【问题讨论】:

    标签: node.js


    【解决方案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);
      });
    

    【讨论】:

    • 那你说它是用来调试的吗?
    • 一点也不;您应该始终检查程序中的错误。如果某些失败(例如文件读/写操作),您会想知道它 - 无论是在开发环境还是生产环境中。这就是错误回调的原因。
    猜你喜欢
    • 2019-08-17
    • 2017-10-13
    • 1970-01-01
    • 2018-07-05
    • 2016-06-15
    • 1970-01-01
    • 2012-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多