ES6中的生成器:嵌套产量?

Key*_*kar 0 generator ecmascript-6

谁能向我解释这段代码是如何工作的?(嵌套产量):

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
Run Code Online (Sandbox Code Playgroud)

首先是console.log(),我们得到的值为10,之后是11 ..12 ... 13 ... 20 ...这个嵌套的收益如何工作?

Fel*_*ing 6

yield* anotherGenerator(i); 基本上是一个方便的简写

for (var value of anotherGenerator(i)) {
  yield value;
}
Run Code Online (Sandbox Code Playgroud)