NodeJSasynchronous:callback已经被调用?

我在Node.JS中使用asynchronous模块来跟踪我的asynchronous调用。 但是,我收到一个错误 – “已经调用callback”。 有人可以帮我吗?

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

       

网上收集的解决方案 "NodeJSasynchronous:callback已经被调用?"

你打电话给res.send(“找不到用户”); 每次你加载失败。 但是,您可能无法加载多次。

解决方法是将所有的响应代码放在最后的callback中,而不是在每个callback中。

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