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.

Die next() Methode von Generator Instanzen liefert ein Objekt mit zwei Eigenschaften done und value. Sie können der next Methode auch einen Parameter übergeben, um einen Wert an den Generator zu senden.

Syntax

js
next()
next(value)

Parameter

value Optional

Der Wert, der an den Generator gesendet werden soll.

Der Wert wird als Ergebnis eines yield Ausdrucks zugewiesen. Zum Beispiel, in variable = yield expression, wird der an die .next() Funktion übergebene Wert der variable zugewiesen.

Rückgabewert

Ein Object mit zwei Eigenschaften:

done

Ein Boolescher Wert:

  • true, wenn der Generator das Ende seines Kontrollflusses erreicht hat. In diesem Fall gibt value den Rückgabewert des Generators an (der möglicherweise undefiniert ist).
  • false, wenn der Generator in der Lage ist, weitere Werte zu erzeugen.
value

Jeder von JavaScript erzeugte oder vom Generator zurückgegebene Wert.

Ausnahmen

TypeError

Wird ausgelöst, wenn der Generator bereits läuft.

Beispiele

Verwendung von next()

Das folgende Beispiel zeigt einen Generator und das Objekt, das die next Methode zurückgibt:

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 }

Verwendung von next() mit einer Liste

In diesem Beispiel nimmt getPage eine Liste und "paginisiert" sie in Abschnitte der Größe pageSize. Jeder Aufruf von next liefert einen solchen Abschnitt.

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 }

Senden von Werten an den Generator

In diesem Beispiel wird next mit einem Wert aufgerufen.

Hinweis: Der erste Aufruf gibt nichts aus, da der Generator anfänglich nichts lieferte.

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

Spezifikationen

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

Browser-Kompatibilität

Siehe auch