【发布时间】:2014-08-19 03:34:21
【问题描述】:
我在 Node.JS 中使用 Async 模块来跟踪我的异步调用。但是,我收到一个错误 - “已调用回调”。 有人可以帮我吗?
async.each(data['results'], function(result, done) {
if (result['twitter_id'] !== null) { //Isolate twitter handle
var param = { "user.screen_name": result['twitter_id']}
db.test4.find( param, function(err, users) {
if( err ) {
return done(err);
} else if (!users) {
res.send("No user found");
} else {
users.forEach( function(Result) {
twitter_ids.push(Result);
//console.log(Result);
done();
});
}
});
}
}, function(err) {
if (err) {
throw err
}
res.send(twitter_ids);
});
【问题讨论】:
-
您在 forEach 循环的每次迭代中都调用了 done()。您应该在该循环之外完成,它会起作用。您还应该确保在“else if”分支中也调用了 done()。
-
我从未使用过 Async 模块,但仅查看您的代码,您似乎在循环中多次触发
done()(即您的回调)
标签: javascript node.js asynchronous