在node.js中使用asynchronous瀑布时的“err”参数

我正在尝试执行一系列函数,每个函数都将callback传递给下一个函数。 现在看起来像这样(原谅任何小错误,我正在重写,因为我张贴!):

function func1(callback) { callback(null, "stuff"); } function func2(input, callback) { callback(null, "foo" + input); } async.waterfall([func1, func2], function(err, result) { sys.puts(result); }); 

我的第一个问题是,我不知道如何优雅地启动这个函数,因为它不能接受input。 我将最终将其包装在当地的一个function中,但这仍然让我感到有些不安。

其次,虽然这样做,但我不知道“错误”的论点是如何起作用的。 如果我尝试将其插入参数列表中,则会以各种方式中断。 我希望能够单独捕获任何函数中的错误 – 或者这是需要的,因为我最后一个callback传递了错误?

瀑布通常与匿名函数一起使用,因此参数来自外部作用域。

err工作原理很简单,当你提供任何计算结果为true的值时,callback函数的第一个参数就会停止并调用主callback函数。

 function doStuff(foo, bla) { // more setup here async.waterfall([ function(callback){ try { // something that might explode callback(null, foo, bla); } catch (e) { callback(e); } }, function(arg1, arg2, callback){ callback(null, 'three'); }, function(arg1, callback){ callback(null, 'done'); } ], function (err, status) { // if the above try/catche catches something, we will end up here // otherwise we will receive 'done' as the value of status // after the third function has finished }); }