我想在 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/