我在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);
});
答案 0 :(得分:11)
你正在呼叫res.send(“找不到用户”);每次加载失败。但是,您可能无法多次加载。
解决方案是将所有响应代码放在最终回调中,而不是放在每个回调中。
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 ) {
done(err);
} else if (!users) {
done(new Error("No user found"));
} else {
users.forEach( function(Result) {
twitter_ids.push(Result);
//console.log(Result);
});
done();
}
});
} else {
done();
}
}, function(err) {
if (err) {
return next(err);
}
res.send(twitter_ids);
});