Generator.prototype.next()
Метод next() возвращает объект с двумя свойствами done и value. Также вы можете задать параметр для метода next, чтобы отправить значение в генератор.
Синтаксис
gen.next(value)
Параметры
value-
Значение, отправляемое в генератор. Значение будет установлено в виде результата выражения yield, т. е. в [переменная] = yield [выражение] значение, которое было передано в функцию .next будет присвоено [переменной].
Возвращаемое значение
Object с двумя свойствами:
done(boolean)- Имеет значение
true, если итератор находится за окончанием итерируемой последовательности. В этом случаеvalueможет указывать возвращаемое значение итератора. - Имеет значение
false, если итератор может создать следующее значение в последовательности. Это эквивалентно вообще не указанному свойствуdone.
- Имеет значение
value- любое JavaScript значение, возвращаемое итератором. Может быть опущено, когдаdoneимеет значениеtrue.
Примеры
Использование next()
Следующий пример показывает простой генератор и объект, который возвращает метод next:
js
function* gen() {
yield 1;
yield 2;
yield 3;
}
var g = gen(); // "Generator { }"
g.next(); // "Object { value: 1, done: false }"
g.next(); // "Object { value: 2, done: false }"
g.next(); // "Object { value: 3, done: false }"
g.next(); // "Object { value: undefined, done: true }"
Отправка значения в генератор
В этом примере next вызывается со значением. Отметим, что первый вызов ничего не вывел, потому что генератор изначально ничего не получил.
js
function* gen() {
while(true) {
var value = yield null;
console.log(value);
}
}
var g = gen();
g.next(1);
// "{ value: null, done: false }"
g.next(2);
// 2
// "{ value: null, done: false }"
Спецификации
| Specification |
|---|
| ECMAScript Language Specification # sec-generator.prototype.next |
Совместимость с браузерами
BCD tables only load in the browser