Генераторы и итераторы
Протокол итерации, function*/yield, бесконечные последовательности и async-генераторы
Генераторы и итераторы
Генераторы — это функции, которые умеют «ставить себя на паузу» и возобновлять выполнение. Они реализуют протокол итерации и открывают целый класс паттернов: бесконечные последовательности, ленивые вычисления, конечные автоматы и асинхронные потоки данных.
Генератор — это функция, объявленная с
function*, которая возвращает объект-итератор. Каждый вызов yield «замораживает» выполнение и возвращает значение наружу. Вызов .next() размораживает его с того же места.Что изучим
- Протокол итерации —
Symbol.iterator,for...of, spread и деструктуризация - Генераторы: синтаксис и поведение —
function*,yield, передача значений обратно - Практические применения — бесконечные диапазоны, ленивый map/filter, конечные автоматы
- Async-генераторы —
async function*,for await...of, постраничная загрузка