@Top_Pudge

Что делают асинхронные генераторы (async function*)?

На сайте babel нашел асинхронные генераторы. Никогда ранее о них не слышал, а главное не видил в спецификации. Это stage 0 ? Зачем это нужно ? И где может быть использовано ? Стоит ли использовать ? Может кто то уже использовал ? Мне кажется , что если мне ни разу сильно не понадобились обычные генераторы (не для замены async/await), то асинхронные тем более.
Как я понял , это просто генераторы с возможностью использования await, но там еще есть конструкции типа for await
for await (const line of readLines(filePath)) {
  console.log(line);
}

Даже не представляю где это может быть использовано
  • Вопрос задан
  • 413 просмотров
Решения вопроса 1
dummyman
@dummyman
диссидент-схизматик
Хм. Странно, что вам ни разу сильно не понадобились обычные генераторы. Промисы, генераторы, async/await, co/thunkify - все они призваны распутывать лапшу из колбэков. Причем, решения могут выглядеть по-разному, но формально работает по одному и тому же алгоритму. Потому ваше утверждениие чрезчур категорично. То есть, например, использование async/await бабелью будет перекодировано в алгоритм схожий с принципами промисов. Но, бывают даже находятся люди, которые используя более высокоуровневые async/await, утверждают, что не пользуются ни промисами, ни генераторами. - И зачем их придумали вообще?!

Теперь по вашему вопросу. А что вас удивляет в новых генераторах? Я бы назвал их не асинхронными, а генераторами генераторов! Так как простые генераторы тоже задуманы выполняться асинхронно. И использовано оно может быть в тех же ситуациях, просто смотря на уровень выше. Ну и for await, соответственно, туда же. - Может быть использован, например, когда вам нужно прочитать все файлы в папке рекурсивно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы