aboutsummaryrefslogtreecommitdiff
path: root/files/de/web/javascript/reference/operators/yield
diff options
context:
space:
mode:
authorPeter Bengtsson <mail@peterbe.com>2020-12-08 14:41:15 -0500
committerPeter Bengtsson <mail@peterbe.com>2020-12-08 14:41:15 -0500
commit4b1a9203c547c019fc5398082ae19a3f3d4c3efe (patch)
treed4a40e13ceeb9f85479605110a76e7a4d5f3b56b /files/de/web/javascript/reference/operators/yield
parent33058f2b292b3a581333bdfb21b8f671898c5060 (diff)
downloadtranslated-content-4b1a9203c547c019fc5398082ae19a3f3d4c3efe.tar.gz
translated-content-4b1a9203c547c019fc5398082ae19a3f3d4c3efe.tar.bz2
translated-content-4b1a9203c547c019fc5398082ae19a3f3d4c3efe.zip
initial commit
Diffstat (limited to 'files/de/web/javascript/reference/operators/yield')
-rw-r--r--files/de/web/javascript/reference/operators/yield/index.html119
1 files changed, 119 insertions, 0 deletions
diff --git a/files/de/web/javascript/reference/operators/yield/index.html b/files/de/web/javascript/reference/operators/yield/index.html
new file mode 100644
index 0000000000..973ec506c4
--- /dev/null
+++ b/files/de/web/javascript/reference/operators/yield/index.html
@@ -0,0 +1,119 @@
+---
+title: yield
+slug: Web/JavaScript/Reference/Operators/yield
+tags:
+ - ECMAScript 2015
+ - Generators
+ - Iterator
+ - JavaScript
+ - Operator
+translation_of: Web/JavaScript/Reference/Operators/yield
+---
+<div>{{jsSidebar("Operators")}}</div>
+
+<p>Das <code>yield</code> Schlüsselwort wird eingesetzt zum Anhalten und Fortsetzen einer Generatorfunktion ({{jsxref("Statements/function*", "function*")}} oder <a href="/de/docs/Web/JavaScript/Reference/Statements/Legacy_generator_function">veralteten Generatorfunktion</a>) eingesetzt.</p>
+
+<div>{{EmbedInteractiveExample("pages/js/expressions-yield.html")}}</div>
+
+
+
+<h2 id="Syntax">Syntax</h2>
+
+<pre class="syntaxbox">[<em>rv</em>] = <strong>yield</strong> [<em>expression</em>];</pre>
+
+<dl>
+ <dt><code>expression</code></dt>
+ <dd>Definiert den Wert, der von der Generatorfunktion über das <a href="/de/docs/Web/JavaScript/Reference/Iteration_protocols#The_iterator_protocol">Iterator Protokoll</a> zurückgegeben wird. wird dieser weggelassen, wird <code>undefined</code> zurückgegeben.</dd>
+ <dt><code>rv</code></dt>
+ <dd>
+ <p>Gibt den optionalen Wert zurück, der der <code>next()</code> Methode des Generators übergeben wird, damit dieser weiter verarbeitet werden kann.</p>
+ </dd>
+</dl>
+
+<h2 id="Beschreibung">Beschreibung</h2>
+
+<p>Das <code>yield</code> Schlüsselwort hält die Ausführung der Generatorfunktion an und gibt den Wert des Ausdrucks nach dem <code>yield</code> Schlüsselwort an den Aufrufer des Generators zurück. Es kann als die generatorbasierte Version des <code>return</code> Schlüsselwortes gesehen werden.</p>
+
+<p>Das <code>yield</code> Schlüsselwort gibt ein <code>IteratorResult</code> Objekt mit zwei Eigenschaften, <code>value</code> und <code>done</code>, zurück. Die <code>value</code> Eigenschaft ist das Ergebnis des ausgewerteten <code>yield</code> Ausdrucks und <code>done</code> ist <code>false</code>, was gedeutet, dass der Generator noch nicht fertig ist.</p>
+
+<p>Solange ein <code>yield</code> Ausdruck pausiert, wird die Codeausführung des Generators pausiert, bis die <code>next()</code> Methode des Generators aufgerufen wird. Mit jedem Aufruf der Generator <code>next()</code> Methode läuft der Generator weiter, bis einer der folgenden Punkte eintritt:</p>
+
+<ul>
+ <li> Ein <code>yield</code>, welches dazu führt, dass der Generator wieder Pausiert und einen neuen Generatorwert zurückgibt. Beim nächsten Aufruf von <code>next()</code> wird die Ausführung direkt nach dem <code>yield</code> fortgesetzt.</li>
+ <li>{{jsxref("Statements/throw", "throw")}} wird eingesetzt um einen Fehler im Generator zu erzeugen. Dieses stoppt den Generator vollständig und führt dazu, dass die Ausführung beim Aufrufer fortgesetzt wird, wie es bei üblicherweise bei Fehlern der Fall ist.</li>
+ <li>Das Ende einer Generatorfunktion wird erreicht; In diesem Fall endet die Ausführung des Generator und ein <code>IteratorResult</code> Objekt wird zum Aufrufer zurückgegeben, bei dem <code>value</code> {{jsxref("undefined")}} ist und <code>done</code> <code>true</code> ist.</li>
+ <li>Ein {{jsxref("Statements/return", "return")}} Statement wird erreicht. In diesem Fall endet die Ausführung des Generators und ein <code>IteratorResult</code> Objekt wird zum Aufrufer zurückgegeben, welches als <code>value</code> den vom <code>return</code> Statement spezifizierten Wert enthält und <code>done</code> <code>true</code> ist.</li>
+</ul>
+
+<p>Wenn ein optionaler Wert der <code>next()</code> Methode des Generators übergeben wird, wird der Wert es der aktuelle Rückgabewert der <code>yield</code> Operation sein.</p>
+
+<p>Durch den Generatorcodepfad, seinem <code>yield</code> 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.</p>
+
+<h2 id="Beispiele">Beispiele</h2>
+
+<p>Der folgende Code ist die Deklaration einer Beispielgeneratorfunktion.</p>
+
+<pre class="brush: js">function* countAppleSales () {
+ var saleList = [3, 7, 5];
+ for (var i = 0; i &lt; saleList.length; i++) {
+ yield saleList[i];
+ }
+}</pre>
+
+<p>Wenn eine Generatorfunktion definiert ist, kann dieser benutzt werden, um einen Iterator, wie gezeigt, zu erstellen.</p>
+
+<pre class="brush: js">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 }</pre>
+
+<h2 id="Spezifikationen">Spezifikationen</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">Spezifikation</th>
+ <th scope="col">Status</th>
+ <th scope="col">Kommentar</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ES2015', '#', 'Yield')}}</td>
+ <td>{{Spec2('ES2015')}}</td>
+ <td>Initiale Definition.</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#', 'Yield')}}</td>
+ <td>{{Spec2('ESDraft')}}</td>
+ <td> </td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browserkompatibilität">Browserkompatibilität</h2>
+
+
+
+<p>{{Compat("javascript.operators.yield")}}</p>
+
+<h2 id="Firefox_spezifische_Hinweise">Firefox spezifische Hinweise</h2>
+
+<ul>
+ <li>Angefangen mit Gecko 29 {{geckoRelease(29)}}, erzeugt eine fertige Generatorfunktion keinen {{jsxref("TypeError")}} "generator has already finished" mehr. Stattdessen wird ein <code>IteratorResult</code> Objekt wie folgendes zurückgegeben: <code>{ value: undefined, done: true }</code> ({{bug(958951)}}).</li>
+ <li>Angefangen mit Gecko 33 {{geckoRelease(33)}}, wurde das einlesen des <code>yield</code> Ausdrucks aktualisert, um konform mit der ES2015 Spezifikation zu sein ({{bug(981599)}}):
+ <ul>
+ <li>Der Ausdruck nach dem <code>yield</code> Schlüsselwort ist optional und das Weglassen führt nicht mehr zu einem {{jsxref("SyntaxError")}}: <code>function* countAppleSales() { yield; }</code></li>
+ </ul>
+ </li>
+</ul>
+
+<h2 id="Siehe_auch">Siehe auch</h2>
+
+<ul>
+ <li><a href="/de/docs/Web/JavaScript/Guide/The_Iterator_protocol">Das Iterator Protokoll</a></li>
+ <li>{{jsxref("Statements/function*", "function*")}}</li>
+ <li>{{jsxref("Operators/function*", "function* expression")}}</li>
+ <li>{{jsxref("Operators/yield*", "yield*")}}</li>
+</ul>