Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit September 2016 browserübergreifend verfügbar.
Der yield Operator wird verwendet, um eine Generatorfunktion zu pausieren und fortzusetzen.
Der Wert, der über das Iterator-Protokoll aus der Generatorfunktion ausgegeben wird. Wenn weggelassen, wird undefined ausgegeben.
Gibt den optionalen Wert zurück, der an die next() Methode des Generators übergeben wurde, um die Ausführung fortzusetzen.
Hinweis: Das bedeutet, next() ist asymmetrisch: es sendet immer einen Wert an das aktuell angehaltene yield, gibt aber den Operanden des nächsten yield zurück. Der übergebene Wert des ersten next() Aufrufs kann nicht abgerufen werden, da kein aktuell angehaltenes yield existiert.
Das Schlüsselwort yield pausiert die Ausführung einer Generatorfunktion und der Wert des Ausdrucks nach dem yield Schlüsselwort wird an den Aufrufer des Generators zurückgegeben. Es kann als generatorbasierte Version des return Schlüsselworts betrachtet werden.
yield kann nur direkt innerhalb der Generatorfunktion verwendet werden, die es enthält. Es kann nicht innerhalb verschachtelter Funktionen verwendet werden.
Der Aufruf einer Generatorfunktion erzeugt ein Generator Objekt. Jedes Mal, wenn die next() Methode des Generators aufgerufen wird, wird die Generatorausführung fortgesetzt und läuft bis zu einem der folgenden Punkte:
Einmal auf einem yield Ausdruck pausiert, bleibt die Codeausführung des Generators angehalten, bis die next() Methode des Generators erneut aufgerufen wird. Wenn ein optionaler Wert an die next() Methode des Generators übergeben wird, wird dieser Wert als Rückgabewert der aktuellen yield Operation des Generators. Der erste next() Aufruf hat keine entsprechende angehaltene yield Operation, sodass es keine Möglichkeit gibt, das Argument des ersten next() Aufrufs abzurufen.
Wenn die return() oder throw() Methode des Generators aufgerufen wird, wirkt dies, als ob eine return oder throw Anweisung am pausierten yield Ausdruck ausgeführt wurde. Sie können try...catch...finally im Körper der Generatorfunktion verwenden, um diese vorzeitigen Abschlüsse zu behandeln. Wenn die return() oder throw() Methode aufgerufen wird, aber kein angehaltener yield Ausdruck vorhanden ist (weil next() noch nicht aufgerufen wurde oder weil der Generator bereits abgeschlossen ist), dann können die vorzeitigen Abschlüsse nicht behandelt werden und beenden den Generator immer.
Der folgende Code ist die Deklaration einer Beispiel-Generatorfunktion.
Sobald eine Generatorfunktion definiert ist, kann ein Iterator wie folgt erstellt werden.
Sie können auch einen Wert mit next(value) in den Generator senden. step wird als Rückgabewert des yield Ausdrucks ausgewertet — obwohl der an die next() Methode des Generators übergebene Wert beim ersten Aufruf von next() ignoriert wird.
| ECMAScript® 2027 Language Specification # prod-YieldExpression |
JavaScript aktivieren, um diese Browser-Kompatibilitätstabelle anzuzeigen.
Der Bauplan für ein besseres Internet.
Besuche die gemeinnützige Muttergesellschaft der Mozilla Corporation, die Mozilla Foundation.
Teile dieses Inhalts sind ©1998–2026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfügbar unter einer Creative-Commons-Lizenz.