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) }