如何在for-each循环中使用async-await? [重复]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在for-each循环中使用async-await? [重复]相关的知识,希望对你有一定的参考价值。
这个问题在这里已有答案:
我正在开发一个项目,其中有一个我需要经历的数组并从MongoDB数据库中查询模型。
完成此查询后,我需要使用查询响应增加另一个数组,但在使用await查询后,查询下的所有内容似乎都被“忽略”。
我试图回复一个承诺,甚至使用.then()但没有任何作用。
const schedules = { all: [], unique: [], final: []};
...
schedules.unique.forEach(async (schedule) => {
const final = await ScheduleRef.findById(schedule);
schedules.final.push(final);
});
答案
假设你是正确的findById
返回一个承诺,你应该能够通过用schedules.unique
迭代map
,然后将await
ed Promise.all
的值分配给schedule.final
来收集所有的承诺。
const schedules = { all: [], unique: [], final: []};
(async () => {
const finds = schedules.unique.map(schedule => {
return ScheduleRef.findById(schedule);
});
schedules.final = await Promise.all(finds);
})();
以上是关于如何在for-each循环中使用async-await? [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有 ConcurrentModificationException 的情况下使用 for-each 循环进行迭代时修改集合? [复制]
对于不实现 Iterable 的类,如何使用 for-each 循环