next()
method returns an object with two properties
done
and
value
. You can also provide a parameter to the
next
method to send a value to the generator.
gen.next(value)
value
The value to send to the generator.
yield
expression. For example, in
variable
= yield
expression
, the value passed to the
.next()
function will be assigned to
variable
.
Object
with two properties:
done
(boolean)
true
if the iterator is past the end of the iterated sequence. In this case
value
optionally specifies the
返回值
of the iterator.
false
if the iterator was able to produce the next value in the sequence. This is equivalent of not specifying the
done
property altogether.
value
done
is
true
.
The following example shows a simple generator and the object that the
next
method returns:
function* gen() {
yield 1;
yield 2;
yield 3;
}
const 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 }"
function* getPage(pageSize = 1, list) {
let output = [];
let index = 0;
while (index < list.length) {
output = [];
for (let i = index; i < index + pageSize; i++) {
if (list[i]) {
output.push(list[i]);
}
}
yield output;
index += pageSize;
}
}
list = [1, 2, 3, 4, 5, 6, 7, 8]
var page = getPage(3, list); // Generator { }
page.next(); // Object {value: (3) [1, 2, 3], done: false}
page.next(); // Object {value: (3) [4, 5, 6], done: false}
page.next(); // Object {value: (2) [7, 8], done: false}
page.next(); // Object {value: undefined, done: true}
在此范例中,
next
is called with a value.
Note that the first call does not log anything, because the generator was not yielding anything initially.
function* gen() {
while (true) {
let value = yield null;
console.log(value);
}
}
const g = gen();
g.next(1);
// "{ value: null, done: false }"
g.next(2);
// 2
// "{ value: null, done: false }"
| 规范 |
|---|
|
ECMAScript (ECMA-262)
The definition of 'Generator.prototype.next' in that specification. |
| Desktop | Mobile | Server | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
next
|
Chrome 39 | Edge 13 | Firefox 26 | IE No | Opera 26 | Safari 10 | WebView Android 39 | Chrome Android 39 | Firefox Android 26 | Opera Android 26 | Safari iOS 10 | Samsung Internet Android 4.0 | nodejs Yes |
完整支持
不支持
Generator
Generator.prototype.next()
Generator.prototype.return()
Generator.prototype.throw()
Function
Object
Object.prototype.__defineGetter__()
Object.prototype.__defineSetter__()
Object.prototype.__lookupGetter__()
Object.prototype.__lookupSetter__()
Object.prototype.hasOwnProperty()
Object.prototype.isPrototypeOf()
Object.prototype.propertyIsEnumerable()
Object.prototype.toLocaleString()
Object.prototype.toSource()
Object.prototype.toString()
Object.prototype.valueOf()
Object.setPrototypeOf()