Избегайте forEach
с await
. Это не будет работать правильно.
forEach
игнорирует все результаты функции обратного вызова, которую он принимает. Если вы передадите ей функцию async
или любую другую функцию, возвращающую обещание, все возвращенные обещания останутся необработанными.
Вместо этого используйте встроенные циклы for.
Чтобы соответствовать вашему нецикличному коду, который одновременно запускает только один элемент, выполните:
for (const element of ['one', 'two']) {
console.log(await runit(element));
}
Это существенно отличается от других ответов с Promise.all
. Promise.all
ожидает массового выполнения нескольких обещаний, что подразумевает, что все идет параллельно.
Чтобы запустить вещи параллельно, выполните:
for (const res of await Promise.all(['one', 'two'].map(runit)) {
console.log(res);
}