Generator.prototype.next()
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.
Метод next()
возвращает объект с двумя свойствами done
и value
. Также вы можете задать параметр для метода next
, чтобы отправить значение в генератор.
Синтаксис
gen.next(value)
Параметры
value
-
Значение, отправляемое в генератор. Значение будет установлено в виде результата выражения yield, т. е. в [переменная] = yield [выражение] значение, которое было передано в функцию .next будет присвоено [переменной].
Возвращаемое значение
Object
с двумя свойствами:
-
done
(boolean)- Имеет значение
true
, если итератор находится за окончанием итерируемой последовательности. В этом случаеvalue
может указывать возвращаемое значение итератора. - Имеет значение
false
, если итератор может создать следующее значение в последовательности. Это эквивалентно вообще не указанному свойствуdone
.
- Имеет значение
-
value
- любое JavaScript значение, возвращаемое итератором. Может быть опущено, когдаdone
имеет значениеtrue
.
Примеры
Использование next()
Следующий пример показывает простой генератор и объект, который возвращает метод next
:
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
вызывается со значением. Отметим, что первый вызов ничего не вывел, потому что генератор изначально ничего не получил.
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