Генераторы и итераторы

Протокол итерации, function*/yield, бесконечные последовательности и async-генераторы

Генераторы и итераторы

Генераторы — это функции, которые умеют «ставить себя на паузу» и возобновлять выполнение. Они реализуют протокол итерации и открывают целый класс паттернов: бесконечные последовательности, ленивые вычисления, конечные автоматы и асинхронные потоки данных.

Генератор — это функция, объявленная с function*, которая возвращает объект-итератор. Каждый вызов yield «замораживает» выполнение и возвращает значение наружу. Вызов .next() размораживает его с того же места.

Что изучим

<CrossLink chapter="ch06-loops" title="Циклы и итерация" /><CrossLink chapter="ch07-functions" title="Функции и замыкания" /><CrossLink chapter="ch02-async" title="Асинхронность и промисы" />