帮我绕过这个例子:
function* genFuncWithReturn() {
yield 'a';
yield 'b';
return 'The result';
}
function* logReturned(genObj) {
const result = yield* genObj;
console.log(result); // (A)
}
结果:
> [...logReturned(genFuncWithReturn())]
The result
[ 'a', 'b' ]
所以,我的问题是为什么首先生成return语句,然后第二产生递归生成器语句?
答案 0 :(得分:3)
[...logReturned(...)]
在终止后的 中产生新的数组。并且在之前 logReturned
终止之前,它会调用logReturned
。
也许这种ASCII艺术有助于理解流程:
console.log(result)