gpt4 book ai didi

javascript - 类型错误 : object is not a function with async. waterfall

转载 作者:搜寻专家 更新时间:2023-11-01 00:14:55 26 4
gpt4 key购买 nike

我是一个尝试使用 async.waterfall 的 node.js 菜鸟.从 waterfall 数组的最后一个任务到最终的回调方法,我遇到了问题。

在下面的示例中,我将回调传递给 doSomethingAsync,但是当我想在 doSomethingAsync 中执行回调时,我得到了 TypeError: object is not a功能。我不明白。谢谢你的想法

编辑:

waterfall 的第一个任务是创建 Mongo 文档。 save() 函数的回调是 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() 的函数之前在 waterfall 中有一个函数。

方式async.waterfall()有效的是它将传递给回调的任何参数传递给函数列表中的下一个函数。因此,上一个函数可能正在执行类似 callback(null, { foo: 'bar' }) 的操作,而下一个函数中的 callback 参数实际上是 { foo : 'bar' 第二个参数是真正的回调。这实际上取决于您之前向回调传递了多少参数。

因此假设您只传递 1 个项目,您将更改函数定义:

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

到:

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

关于javascript - 类型错误 : object is not a function with async. waterfall ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28401540/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com