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);
db 是什么并不重要。
我知道 NodeJS 是异步的,但是添加到数组然后打印数组的方法是什么?
现在发生的是,
console.log(membersStatArray) --> []
因为它采用空数组。
这过去是什么?
最佳答案
修改您的代码,使其使用 Promise.all
将所有 promise 收集到一个 promise 中,当所有单独的 promise 都解决时,该 promise 就会解决:
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);
});
关于arrays - NodeJS 数组同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41405625/