在迭代器函数中完成所有任务的节点,asynchronous和callback

所以我在async.map集合中执行任务,迭代器函数在对asynchronous任务收集的所有数据执行任务之前执行多个asynchronous任务。

一个快速的伪示例如下所示:

var accts=//array of accounts fechted from mongodb async.map(accts,function(acct,callback){ var likes=0; http.get(acct.facebook,function(err,resp){/*add fan count to likes*/}); http.get(acct.twitter,function(err,resp){/*add followers to likes*/}); //mongoose Model named artist artist.update({_id:acct._id},{fans:likes},function(err,acctsUpdate){}); } 

我的困惑在于更新mongodb可能会在两个asynchronous任务完成之前发生,因此打破了我的应用程序。 我怎么去做这个?

我已经做了类似的使用async.waterfall和async.map。 希望这可以帮助

 async.waterfall([ function(callback){ request.get('/api/fancy/', function(err, r, body) { if (err) return callback(err); callback(null, data); }); }, function(accts, callback){ async.map(accts, _insertAcct, function(err, results){ if (err) return done(err); done(null, results); }); function _insertAcct(acct, _cb){ if (!acct) return _cb(new Error('No acct data')); // save the acct to the db, using mongoskin db.collection('acct').save(audit, {upsert: true}, function(err, result){; if (err) return _cb(err); _cb(null, result) }); } } ], function(err, results){ // });