01. Generators
Генераторы — новая разновидность функций в ES6. Генераторы могут приостанавливать своё выполнение, возвращая промежуточный результат и далее возобновлять его позже, в произвольный момент времени. По сути, генератор - это пошагово выполняемая функция, для которой программист может контролировать начало следующего шага выполнения.
Основные области применения генераторов:
Итераторы
Асинхронные функции
Процессы
Finite State Machine
Ленивые последовательности
Для объявления генератора используется конструкция function*
(функция со звёздочкой):
Внутри функции генератора могут находится yield
-выражения - это специальные места в коде, где функция приостанавливает свое выполнение и возвращает результат во внешний мир и ожидает до тех пор, пока не позволят продолжить исполнение дальше, до следующего yield
, или до конца функции с вызовом return
.
Особенности генераторов:
Генератор может быть бесконечным.
Вызов генератора допускается везде, где можно использовать итераторы.
Нельзя перемотать назад генератор.
yield
может быть использован только внутри генераторов и ни в каких других функциях.Generator functions are actually constructors of iterators.
Если последним выражением генератора является
return value
, то во многих случаяхvalue
игнорируется. Лучше возвращать последнее значение черезyield
.
Last updated
Was this helpful?