2016-10-24 1 views
0

Kann mir jemand erklären, wie dieser Code funktioniert? (Verschachtelt Erträge):Generatoren in ES6: verschachtelte Ausbeuten?

function* anotherGenerator(i) { 
    yield i + 1; 
    yield i + 2; 
    yield i + 3; 
} 

function* generator(i){ 
    yield i; 
    yield* anotherGenerator(i); 
    yield i + 10; 
} 

var gen = generator(10); 

console.log(gen.next().value); // 10 
console.log(gen.next().value); // 11 
console.log(gen.next().value); // 12 
console.log(gen.next().value); // 13 
console.log(gen.next().value); // 20 

Zuerst console.log() erhalten wir einen Wert von 10, danach 11 ..12 ... 13 ... 20 ... wie funktioniert diese Unter Ausbeute Arbeit ?

+1

Dies ist ein Beispiel von MDN, nicht wahr? Diese Seite verlinkt auf [die Seite, die yield beschreibt] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/yield*). – vaultah

+0

Es funktioniert so, wie es in der Dokumentation heißt. –

Antwort

5

yield* anotherGenerator(i); ist im Grunde eine bequeme Abkürzung für

for (var value of anotherGenerator(i)) { 
    yield value; 
} 
+0

Okey danke !!! Ich hab es jetzt !! –

Verwandte Themen