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
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, invariable = yield expression
, wird der an die.next()
Funktion übergebene Wert dervariable
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 gibtvalue
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:
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.
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.
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
function*
- Iterators und Generators Leitfaden