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 gibt ein Objekt mit zwei Eigenschaften done
und value
zurück. Sie können auch einen Parameter an die next
Methode übergeben, um einen Wert an den Generator zu senden.
Syntax
next()
next(value)
Parameter
value
Optional-
Der Wert, den Sie an den Generator senden möchten.
Der Wert wird als Ergebnis eines
yield
Ausdrucks zugewiesen. Zum Beispiel, invariable = yield expression
, wird der Wert, der der.next()
Funktion übergeben wird, dervariable
zugewiesen.
Rückgabewert
Ein Object
mit zwei Eigenschaften:
done
-
Ein boolean Wert:
true
, wenn der Generator am Ende seines Kontrollflusses ist. In diesem Fall spezifiziertvalue
den Rückgabewert des Generators (dieser kann undefiniert sein).false
, wenn der Generator in der Lage ist, weitere Werte zu erzeugen.
value
-
Jeder JavaScript-Wert, der vom Generator erzeugt oder zurückgegeben wurde.
Ausnahmen
TypeError
-
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 Teile der Größe pageSize
. Jeder Aufruf von next
gibt ein solches Stück zurück.
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 }
Werte an den Generator senden
In diesem Beispiel wird next
mit einem Wert aufgerufen.
Hinweis: Der erste Aufruf protokolliert nichts, da der Generator anfänglich nichts erzeugte.
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® 2026 Language Specification # sec-generator.prototype.next |
Browser-Kompatibilität
Siehe auch
function*
- Iteratoren und Generatoren Leitfaden