@Boris007

При решении каких задач используют генераторы?

Во всех обучающих документациях рассказывают о том, как можно бесконечно крутить генераторы и что с ними можно делать
Из более менее примера был генератор с запросами к серверу, но это уже давно делают на async/await
В каких задачах без них не обойтись или с ними на много легче?
Если можно, с примером кода!
  • Вопрос задан
  • 83 просмотра
Решения вопроса 1
Aetae
@Aetae Куратор тега JavaScript
Тлен
В практике генераторы не используются. Конец. :)

На самом деле я лично видел ровно два практических кейса использования генераторов:
1. Использование для асинхронных операций с возможностью прерывания, примеры: redux-saga, mobx actions.
Суть: допустим ты делаешь какую-то ступенчатую операцию, и нужна возможность резко остановить исполнение извне. На async-ax тебе придётся городить что-то типа:
async function multiStep() {
  await step1();
  if (stop) throw new Error(stop);
  await step2();
  if (stop) throw new Error(stop);
  await step3();
  if (stop) throw new Error(stop);
}
и никак красивее не сделать.
На генераторе ты можешь просто писать:
function* multiStep() {
  yield step1();
  yield step2();
  yield step3();
}

и просто не брать следующее значение, если исполнение прервалось.

2. До появления воркеров с их помощью можно было работать с очень большими массивами не вызывая зависания страницы.

На этом всё.:)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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