The 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.
The 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.
generatorObject.next(value)
value
The value to send to the generator.
The value will be assigned as a result of a yield
expression. For example, in variable = yield expression
, the value passed to the .next()
function will be assigned to variable
.
An Object
with two properties:
done
A boolean value:
true
if the generator is past the end of its control flow. In this case value
specifies the return value of the generator (which may be undefined).false
if the generator is able to produce more values.value
Any JavaScript value yielded or returned by the generator.
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 }"
In this example, getPage
takes a list and "paginates" it into chunks of size pageSize
. Each call to next
will yield one such chunk.
function* getPage(list, pageSize = 1) { for (let index = 0; index < list.length; index += pageSize) { yield list.slice(index, index + pageSize); } } const list = [1, 2, 3, 4, 5, 6, 7, 8] const page = getPage(list, 3); // 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}
In this example, next
is called with a value.
Note: The first call does not log anything, because the generator was not yielding anything initially.
function* gen() { while (true) { const value = yield; console.log(value); } } const g = gen(); g.next(1); // No log at this step: the first value sent through `next` is lost // "{ value: null, done: false }" g.next(2); // 2 // "{ value: null, done: false }"
Desktop | Mobile | Server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | Deno | Node.js | |
next |
39 |
13 |
26 |
No |
26 |
10 |
39 |
39 |
26 |
26 |
10 |
4.0 |
1.0 |
4.0.0
0.12.0
|
© 2005–2022 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator/next