如何在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,然后将awaited 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 循环进行迭代时修改集合? [复制]

使用 for-each 循环打印 ArrayList

for-each 循环如何工作? [复制]

对于不实现 Iterable 的类,如何使用 for-each 循环

如何使用 PySpark 进行嵌套的 for-each 循环

为啥 for-each 循环适用于数组? (爪哇)