Generator
Генератор - это объект, возвращаемый функцией-генератором и соответствующий как "Итерируемому" протоколу, так и протоколу "Итератор".
Конструктор
Этот объект не может быть инстанциирован напрямую. Вместо этого, экземпляр Generator может быть возвращён из функции-генератора:
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()- Выдаёт ошибку генератора.
Пример
Бесконечный Итератор
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 | Status | Comment |
|---|---|---|
| ECMAScript 2015 (6th Edition, ECMA-262) Определение 'Generator objects' в этой спецификации. |
Стандарт | Initial definition. |
| ECMAScript (ECMA-262) Определение 'Generator objects' в этой спецификации. |
Живой стандарт |
Совместимость
BCD tables only load in the browser