yield *相当于一个while循环,javascript中的普通产量?

时间:2017-01-06 17:50:34

标签: javascript

如果我有一行:

...
global $ASSETS_VER;
echo $ASSETS_VER;
...

我可以用以下内容替换它:

yield* foo()

显然,这更加冗长,但我试图理解屈服*是否仅仅是语法糖,或者是否有一些我不清楚的语义方面。

1 个答案:

答案 0 :(得分:1)

而不是yield x,您需要执行yield x.value。您还需要调用foo来获取迭代器。 .nextfoo生成器返回的迭代器的方法。



function *foo() {
  yield 1;
  yield 2;
  yield 3;
}

function *f() {
  yield *foo();
}

console.log(Array.from(f()));

function *g() {
  var iterator = foo();
  while (true) {
    var x = iterator.next();
    if (x.done) break;
    yield x.value;
  }
}

console.log(Array.from(g()));