Movatterモバイル変換


[0]ホーム

URL:


MDN Web Docs

Generator.prototype.next()

BaselineWidely available

Thenext() method ofGenerator instances returns anobject with two propertiesdone andvalue. You can alsoprovide a parameter to thenext method to send a value to thegenerator.

Syntax

js
next()next(value)

Parameters

valueOptional

The value to send to the generator.

The value will be assigned as a result of ayield expression. Forexample, invariable = yield expression, the valuepassed to the.next() function will be assigned tovariable.

Return value

AnObject with two properties:

done

A boolean value:

  • true if the generator is past the end of its control flow. In this casevalue specifies thereturn 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.

Exceptions

TypeError

Thrown if the generator is already running.

Examples

Using next()

The following example shows a generator and the object that thenext method returns:

js
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 }

Using next() with a list

In this example,getPage takes a list and "paginates" it into chunks of sizepageSize. Each call tonext will yield one such chunk.

js
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 }

Sending values to the generator

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.

js
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 lostg.next(2); // Returns { value: undefined, done: false }// Logs 2

Specifications

Specification
ECMAScript® 2026 Language Specification
# sec-generator.prototype.next

Browser compatibility

See also

Help improve MDN

Learn how to contribute.

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp