Что выведет код Senior Итераторы и генераторы обновлено

for await

Вопрос

Что выведет код? По строке на каждый вывод.

async function* gen() {
  yield 1;
  yield Promise.resolve(2);
}
(async () => {
  for await (const v of gen()) console.log(v);
  console.log('готово');
})();
console.log('синхронно');

Попробуйте сами

Напишите, что выведет код: каждый вывод с новой строки.

Показать ответ и разбор

Коротко

Код выведет: синхронно, 1, 2, готово. Почему так Асинхронные итераторы позволяют потреблять поток данных по мере поступления - постраничные запросы, чтение потока. for await ждёт каждое значение, поэтому цикл идёт последовательно.

Что выведет

синхронно
1
2
готово

Разбор

Почему так

Асинхронные итераторы позволяют потреблять поток данных по мере поступления - постраничные запросы, чтение потока. for await ждёт каждое значение, поэтому цикл идёт последовательно.

Вывод

синхронно
1
2
готово

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.