arrays - NodeJS 数组同步?

标签 arrays node.js

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/

相关文章:

javascript - 为什么我不能将数据推送到阵列上?

javascript - 您配置的注册表不支持审核请求〜在npm审核上

node.js - 使用流下载大文件时的 Axios 事件

PHP读取每一行

用于显示长数组的 Ruby 样式

java - 使用自定义 View 数组的 NullPointerException

node.js - 如何通过REST接口(interface)从Oozie获取通知?

node.js - 我们如何从elasticsearch索引中获取最后一个文档?

node.js - Reddit 通过 API 投票时给出 403

c - 程序在ID号调用时循环,并且没有在数组中输入信息