for await, 2 варианта. Одно ли это и тоже?

for await (test of promiseArray) {
  await test()
}

for await (test of promiseArray) {
  test()
}

Это одно и тоже (логика исполнения)


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

Автор решения: nörbörnën

Напишем-ка тестовый скрипт:

const sleep = (timeout = 500) => new Promise((resolve) =>
         setTimeout(() => resolve(Math.random()), timeout));

(async() => {

  for (test of [sleep(), sleep()]) {
    const res = await test;
    console.log('part1', res);
  }

  for await (test of [sleep(), sleep(), 'lalala']) {
    console.log('part2', test);
  }

})();

Выражение for await...of создаёт цикл, проходящий через асинхронные итерируемые объекты, а также синхронные итерируемые сущности, включающие: встроенные String, Array, Array-подобные объекты (например., arguments или NodeList), TypedArray, Map, Set, а также определяемые пользователем асинхронные/синхронные сущности. Он вызывает пользовательский итерационный хук с инструкциями, которые должны быть выполнены для значения каждого отдельного свойства объекта.

→ Ссылка