javascript - Async-await 'Promise {<pending>} with Array.prototype.map

标签 javascript node.js asynchronous async-await

我知道有很多关于同一个错误的问题讨论,我看到了其中的大部分,但它们并没有解决我的问题。 我写了这段代码:

const userOrganizationGroups = (organizationGroupsList) => {
 if (Array.isArray(organizationGroupsList) && organizationGroupsList.length) {
    const result = organizationGroupsList.map(async (element) => {
      const { organizationId, groupId } = element;
      const { Organizations, Groups } = models;


      const organization = await Organizations.findOne(
        { _id: organizationId },
        { name: 1, _id: 0 },
      );
      const group = await Groups.findOne({ _id: groupId });
      return Object.assign({}, {
        organizationName: organization.name,
        group: group.name,
      });
    });
    return result;
  }

};

当我调试代码时:

console.log('userOrganizationGroups : ',userOrganizationGroups(list))

我得到了这样的结果:

userOrganizationGroups: Promise { <pending> }

我发现了一个类似的问题:Promise { } - Trying to await for .map我使用了问题中提到的解决方案:

const userOrganizationGroups = async (organizationGroupsList) => {


 if (Array.isArray(organizationGroupsList) && organizationGroupsList.length) {
    const result = await Promise.all(organizationGroupsList.map(async (element) => {
      const { organizationId, groupId } = element;
      const { Organizations, Groups } = models;


      const organization = await Organizations.findOne(
        { _id: organizationId },
        { name: 1, _id: 0 },
      );
      const group = await Groups.findOne({ _id: groupId });
      return Object.assign({}, {
        organizationName: organization.name,
        group: group.name,
      });
    }));
    return result;
  }

我该如何解决这个问题?

最佳答案

代替

console.log('userOrganizationGroups : ',userOrganizationGroups(list))

使用

userOrganizationGroups(list).then( groups => console.log('userOrganizationGroups : ', groups)

(异步()=> { const groups = await userOrganizationGroups(list); console.log('userOrganizationGroups : ', groups); })();

关于javascript - Async-await 'Promise {<pending>} with Array.prototype.map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53283945/

相关文章:

javascript - 如何检索 HTML DOM 中的所有文本但排除 SCRIPT 和 STYLE 标记?

javascript - jquery 旋钮使用 CSS 改变颜色

node.js - 运行 npm install 时多次调用回调

json - 如何通过管道传递 JSON 以在 Node.js 中运行?

node.js - 向 module.exports 添加参数?

python - 如何从同步例程通知异步例程?

javascript - 将当前页面 url 传递给 iframe 地址

javascript - 如何在javascript中用包含该部分的新字符串替换字符串的一部分

node.js - Protractor 等待预期检查中使用的异步函数

c# - C# 中的异步方法不是异步的?