Можно ли заменить Promise.all на async await?

Есть массив функций 'arr', которые возвращают промисы, нужно что бы запросы в этих функциях выполнялись параллельно, и когда все функции выполнятся, обработать результат их работы, самое логичное, это кончено Promise.all(arr).then((data) => { обработка результата })

Но мне стало любопытно, можно ли добиться такого же эффетка но без Promise.all, а использую только async await при работе с массивом 'arr' ?


Ответы (1 шт):

Автор решения: vsemozhebuty

Насколько я понимаю, это эквиваленты:

const arr = [
 () => Promise.resolve(1),
 () => Promise.resolve(2),
 () => Promise.resolve(3),
];

Promise.all(arr.map(f => f()))
  .then((data) => { console.log(data); });

const arr = [
 () => Promise.resolve(1),
 () => Promise.resolve(2),
 () => Promise.resolve(3),
];

(async function main() {
  const data = [];
  for await (const result of arr.map(f => f())) {
    data.push(result);
  }
  console.log(data);
})();

→ Ссылка