Generator
Baseline Widely 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); // 1
console.log(generator().next().value); // 1
console.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); // 0
console.log(gen.next().value); // 1
console.log(gen.next().value); // 2
// ...
Спецификации
Specification |
---|
ECMAScript Language Specification # sec-generator-objects |
Совместимость с браузерами
BCD tables only load in the browser