Генератор — это специальный тип функции, которая может быть приостановлена и возобновлена во время выполнения. В отличие от обычных функций, генераторы создают значения по требованию, а не все сразу.
Генераторы объявляются с использованием синтаксиса function*:
function* myGenerator() {
yield 1;
yield 2;
yield 3;
}
Вызов генератора не выполняет его тело сразу — вместо этого он возвращает объект итератора.
yieldyield приостанавливает функцию и возвращает значение вызывающему коду.next().next() возвращает объект: { value, done }const gen = myGenerator();
gen.next(); // { value: 1, done: false }
gen.next(); // { value: 2, done: false }
gen.next(); // { value: 3, done: false }
gen.next(); // { value: undefined, done: true }
for...ofasync/awaitГенераторы дают тебе детальный контроль над выполнением функции. Возможность приостанавливаться, возвращать значения через yield и возобновляться делает их мощным инструментом для эффективной работы с последовательностями, потоками и сложной логикой итерации.
Вызов функции-генератора сразу выполняет её тело и возвращает первое yielded значение.
Новый — ещё не проверен сообществом
Вы