如果我有一行:
...
global $ASSETS_VER;
echo $ASSETS_VER;
...
我可以用以下内容替换它:
yield* foo()
显然,这更加冗长,但我试图理解屈服*是否仅仅是语法糖,或者是否有一些我不清楚的语义方面。
答案 0 :(得分:1)
而不是yield x
,您需要执行yield x.value
。您还需要调用foo
来获取迭代器。 .next
是foo
生成器返回的迭代器的方法。
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()));