Arrays NodeJS阵列同步?
db是什么并不重要 我知道NodeJS是异步的,但是向数组中添加然后打印数组的方法是什么呢 现在发生的是,Arrays NodeJS阵列同步?,arrays,node.js,Arrays,Node.js,db是什么并不重要 我知道NodeJS是异步的,但是向数组中添加然后打印数组的方法是什么呢 现在发生的是, var membersStatArray = []; membersArray.forEach(function(member) { db.doneTodo .find({ 'victor._id': member._id }) .then((arrayOfUserVictories) => { membersStatA
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);
因为它接受空数组
过去的路是什么 修改代码,使其用于将所有承诺收集到一个承诺中,当所有单个承诺都已解决时,该承诺将得到解决:
console.log(membersStatArray) --> []
您也可以使用
async
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);
});
node.js数组是同步的,但db调用不是,这对我来说是一种新方法。这张“地图”是什么?它在下面的文档中有定义。感谢您指导我完成!为什么我需要“return”符号?第一个return语句返回从函数链中得到的承诺,并将其存放到一个新数组中(由map指定)。第二个return语句用于更改promise返回的内容,以便它们使用所需的对象格式进行解析。和的文档也描述了如何处理回调的返回值。
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);
}
);