node.js - 如何在 foreach 循环中使用多个异步等待调用将返回值推送到数组中

标签 node.js

我想在 forEach 循环中进行多个异步等待函数调用,并将返回值推送到数组中。但它返回一个 promise 。如何将实际返回值存储在数组中?感谢您的帮助。

let table1Assignments = [];
        await groupingTable1Id.forEach(table1Id => {(
             table1Assignments.push(assignmentsDAO.getAssignmentsOfTable(table1Id, date, time)))
        });

getAssignmentsOfTable 看起来像这样:

 async getAssignmentsOfTable(tableId, date = null) {
   let stmt =
      `SELECT * 
       FROM assignment a
       WHERE a.dining_table_id = $1` + (date?' AND a.date = $2':'');
    const params = date?[tableId, date]:[tableId];

    const result = await this.db.query(stmt, params);

    return result.rows.map(row => {
        return new Assignment(
          row.id,
          row.dining_table_id,
          row.guest_group_id,
          row.date,
          row.time
        );
    });
}

最佳答案

我会遵循这种模式:

Promise.all([
  groupingTable1Id.map(table1Id => assignmentsDAO.getAssignmentsOfTable(table1Id, date, time))
]).then((table1Assignments) => {
  table1Assignments.forEach(assignment) { process(assignment) });
});

查看有关 JavaScript (ES6) 的文档 Promise.all here ...

关于node.js - 如何在 foreach 循环中使用多个异步等待调用将返回值推送到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54517992/

相关文章:

node.js - 在 Node.js net.Socket 实例上模拟 ECONNRESET 错误

node.js - 无法在单独的路由处理程序中使用快速 session

node.js - 使用 Express.Router() 具有特定中间件的快速路由

node.js - 如何使用nodeJS TCP服务器与MongoDB实现 session ?

javascript - 杂耍异步 - LearnYouNode - 立即调用函数表达式

node.js - 在 Puppeteer : element. Children.length 中获取元素的子元素可以工作,但 element.children 返回未定义

javascript - Node.js ffmpeg 从 2 个或更多 jpg 图像创建 mp4 视频

javascript - 在 NodeJS 中发送响应之前,如何确保 'for loop' 中的函数得到执行?

javascript - chart.js 创建图表失败 : can't acquire context from the given item

node.js - 在自定义字段上使用两个 JOIN 对查询进行 Sequelize