如何推动返回值到数组与多个异步等待在foreach循环调用
我想使多个异步等待在foreach循环函数调用和按值返回到一个数组。但它返回一个承诺。我怎么可以存储在阵列中的实际返回的值?谢谢您的帮助。
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 ...