Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
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.
Dienext() Methode vonGenerator-Instanzen gibt einObjekt mit zwei Eigenschaftendone undvalue zurück. Sie können aucheinen Parameter an dienext-Methode übergeben, um dem Generator einen Wert zu senden.
In diesem Artikel
Syntax
next()next(value)Parameter
valueOptionalDer Wert, der an den Generator gesendet wird.
Der Wert wird als Resultat eines
yield-Ausdrucks zugewiesen. ZumBeispiel, invariable = yield expression, wird der Wert,der an die.next()Funktion übergeben wird, dervariablezugewiesen.
Rückgabewert
EinObject mit zwei Eigenschaften:
doneEin boolean Wert:
true, wenn der Generator das Ende seines Kontrollflusses überschritten hat. In diesem Fall gibtvaluedenRückgabewert des Generators an (der möglicherweise undefined ist).false, wenn der Generator noch weitere Werte erzeugen kann.
valueJeder JavaScript-Wert, der vom Generator erzeugt oder zurückgegeben wird.
Ausnahmen
TypeErrorWird ausgelöst, wenn der Generator bereits läuft.
Beispiele
>Nutzung von next()
Das folgende Beispiel zeigt einen Generator und das Objekt, das dienext-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 }Nutzung von next() mit einer Liste
In diesem Beispiel nimmtgetPage eine Liste und "paginates" sie in Teile der GrößepageSize. Jeder Aufruf vonnext liefert ein solches Teilstü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 }Senden von Werten an den Generator
In diesem Beispiel wirdnext mit einem Wert aufgerufen.
Hinweis:Der erste Aufruf protokolliert nichts, da der Generator anfangs nichts hervorbrachte.
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 2Spezifikationen
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-generator.prototype.next> |
Browser-Kompatibilität
Siehe auch
function*- Iterators und generators Leitfaden