The next() method of Generator instances 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 of Generator instances 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.
next() next(value)
value Optional
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:
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(); // { value: 1, done: false } g.next(); // { value: 2, done: false } g.next(); // { value: 3, done: false } g.next(); // { 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(); // { value: [1, 2, 3], done: false } page.next(); // { value: [4, 5, 6], done: false } page.next(); // { value: [7, 8], done: false } page.next(); // { 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); // Returns { value: undefined, done: false } // No log at this step: the first value sent through `next` is lost g.next(2); // Returns { value: undefined, done: false } // Logs 2
| Desktop | Mobile | Server | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | Deno | Node.js | ||
next |
39 | 13 | 26 | 26 | 10 | 39 | 26 | 26 | 10 | 4.0 | 39 | 1.0 | 4.0.0 | |
© 2005–2023 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