Generator
BaselineWidely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.
Генератор
- это объект, возвращаемыйфункцией-генератором и соответствующий как"Итерируемому" протоколу, так ипротоколу "Итератор".
Конструктор
Этот объект не может быть инстанциирован напрямую. Вместо этого, экземплярGenerator
может быть возвращён изфункции-генератора:
js
function* generator() { yield 1; yield 2; yield 3;}const gen = generator(); // "Generator { }"console.log(gen.next().value); // 1console.log(generator().next().value); // 1console.log(generator().next().value); // 1
Методы экземпляра
Generator.prototype.next()
Возвращает значение, полученное выражением
yield
.Generator.prototype.return()
Возвращает заданное значение и заканчивает генератор.
Generator.prototype.throw()
Выдаёт ошибку генератора.
Пример
Бесконечный Итератор
js
function* idMaker() { var index = 0; while (true) yield index++;}var gen = idMaker(); // "Generator { }"console.log(gen.next().value); // 0console.log(gen.next().value); // 1console.log(gen.next().value); // 2// ...
Спецификации
Specification |
---|
ECMAScript® 2026 Language Specification # sec-generator-objects |