Итераторы и генераторы
Вопрос
Что такое итератор и генератор, где они применяются?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
итератор - объект с методом next, возвращающим {value, done}
перебираемый объект - тот, у которого есть Symbol.iterator
генератор создаётся через function* и возвращает итератор
yield приостанавливает выполнение и отдаёт значение
генератор может быть бесконечным - значения считаются лениво
применение: ленивые последовательности, пагинация, конечные автоматы
Что могут спросить следом
- Как написать генератор бесконечной последовательности Фибоначчи
- Что делает yield* и зачем
- Как обойти дерево рекурсивным генератором
Разбор
Итератор - объект с методом next(), отдающим {value, done}. Объект перебираем
в for...of, если у него есть [Symbol.iterator], возвращающий итератор.
Генератор (function*) - самый простой способ его написать: yield приостанавливает
выполнение и отдаёт значение, а состояние функции сохраняется между вызовами. Это даёт
ленивые и даже бесконечные последовательности, постраничный обход API и конечные автоматы
(на этом построена redux-saga).
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.