--- title: yield slug: Web/JavaScript/Reference/Operators/yield tags: - ECMAScript 2015 - Generators - Iterator - JavaScript - Operator translation_of: Web/JavaScript/Reference/Operators/yield ---
{{jsSidebar("Operators")}}

Das yield Schlüsselwort wird eingesetzt zum Anhalten und Fortsetzen einer Generatorfunktion ({{jsxref("Statements/function*", "function*")}} oder veralteten Generatorfunktion) eingesetzt.

{{EmbedInteractiveExample("pages/js/expressions-yield.html")}}

Syntax

[rv] = yield [expression];
expression
Definiert den Wert, der von der Generatorfunktion über das Iterator Protokoll zurückgegeben wird. wird dieser weggelassen, wird undefined zurückgegeben.
rv

Gibt den optionalen Wert zurück, der der next() Methode des Generators übergeben wird, damit dieser weiter verarbeitet werden kann.

Beschreibung

Das yield Schlüsselwort hält die Ausführung der Generatorfunktion an und gibt den Wert des Ausdrucks nach dem yield Schlüsselwort an den Aufrufer des Generators zurück. Es kann als die generatorbasierte Version des return Schlüsselwortes gesehen werden.

Das yield Schlüsselwort gibt ein IteratorResult Objekt mit zwei Eigenschaften, value und done, zurück. Die value Eigenschaft ist das Ergebnis des ausgewerteten yield Ausdrucks und done ist false, was gedeutet, dass der Generator noch nicht fertig ist.

Solange ein yield Ausdruck pausiert, wird die Codeausführung des Generators pausiert, bis die next() Methode des Generators aufgerufen wird. Mit jedem Aufruf der Generator next() Methode läuft der Generator weiter, bis einer der folgenden Punkte eintritt:

Wenn ein optionaler Wert der next() Methode des Generators übergeben wird, wird der Wert es der aktuelle Rückgabewert der yield Operation sein.

Durch den Generatorcodepfad, seinem yield Operator und der Möglichkeit einen neuen Startwert zu spezifizierten, indem dieser an {{jsxref("Generator.prototype.next()")}} übergeben wird, sind Generatoren sehr leistungsstark und kontrollierbar.

Beispiele

Der folgende Code ist die Deklaration einer Beispielgeneratorfunktion.

function* countAppleSales () {
  var saleList = [3, 7, 5];
  for (var i = 0; i < saleList.length; i++) {
    yield saleList[i];
  }
}

Wenn eine Generatorfunktion definiert ist, kann dieser benutzt werden, um einen Iterator, wie gezeigt, zu erstellen.

var appleStore = countAppleSales(); // Generator { }
console.log(appleStore.next()); // { value: 3, done: false }
console.log(appleStore.next()); // { value: 7, done: false }
console.log(appleStore.next()); // { value: 5, done: false }
console.log(appleStore.next()); // { value: undefined, done: true }

Spezifikationen

Spezifikation Status Kommentar
{{SpecName('ES2015', '#', 'Yield')}} {{Spec2('ES2015')}} Initiale Definition.
{{SpecName('ESDraft', '#', 'Yield')}} {{Spec2('ESDraft')}}  

Browserkompatibilität

{{Compat("javascript.operators.yield")}}

Firefox spezifische Hinweise

Siehe auch