TypeError:对象不是具有async.waterfall的函数

我是一个node.js noob尝试使用async.waterfall 。 我有问题从瀑布数组的最后一个任务到最后的callback方法。

在下面的例子中,我将callback传递给doSomethingAsync ,但是当我想在doSomethingAsync执行callback时,我得到TypeError: object is not a function 。 我不明白。 谢谢你的想法

编辑

瀑布的首要任务是创build一个Mongo文档。 save()函数的callback是function(err){...}

 var session = createSession(); // session is a Mongoose model async.waterfall([ function (callback) { ... session.save(callback); // Model.save(function(err){...} }, function (callback) { doSomethingAsync(session, callback) } ], function (err, session) { }); function doSomethingAsync(session, callback){ doSomething(function(err){ callback(err,session); } } callback(err,session); ^ TypeError: object is not a function 

我的猜测是,问题在于你已经删除的代码。 更具体地说,你可能在瀑布之前有一个函数,在你显示调用doSomethingAsync()

async.waterfall()工作方式是将传递给callback函数的parameter passing给函数列表中的下一个函数。 所以前面的函数可能会做类似于callback(null, { foo: 'bar' })的函数,下一个函数中的callback参数实际上是{ foo: 'bar' } ,第二个参数是真正的callback函数。 这实际上取决于您之前通过callback传递了多less个参数。

所以假设你只传递一个项目,你可以从下面的函数定义中改变:

 function (callback) { doSomethingAsync(session, callback) } 

至:

 function (someResult, callback) { doSomethingAsync(session, callback) }