NodeJS数组同步?

var membersStatArray = []; membersArray.forEach(function(member) { db.doneTodo .find({ 'victor._id': member._id }) .then((arrayOfUserVictories) => { membersStatArray.push({ email: member.email, victories: arrayOfUserVictories.length }); }) }); console.log(membersStatArray); 

不pipe什么分贝。

我知道NodeJS是asynchronous的,但是什么是添加到数组,然后打印数组?

现在发生的是,

 console.log(membersStatArray) --> [] 

因为它需要空数组。

这是什么方式?

修改您的代码,使其使用Promise.all将所有的承诺收集到一个单一的承诺,这将解决所有的个人承诺已经解决时:

 Promise.all(membersArray.map((member) => { return db .doneTodo .find({'victor._id': member._id}) .then((userVictories) => ({ email: member.email, victories: userVictories.length })); })).then((memberStats) => { console.log(membersStats); }); 

您也可以使用async

 var async = require("async"); var membersStatArray = []; async.each(membersArray, function(member, callback){ db.doneTodo.find({'victor._id': member._id}).then((arrayOfUserVictories) =>{ membersStatArray.push({email: member.email, victories: arrayOfUserVictories.length}); callback(); }) }, function(err){ console.log(membersStatArray); } );