generator中yield *next 与 yield next的区别是什么?


yield *next 与 yield next的区别是什么?

node.js generator

想死不好意思说 10 years, 5 months ago

yield* 是委托提取器,详情看这里: http://wiki.ecmascript.org/doku.php?id=harmony:generators#delegating_yield 。简单地说, yield 是你给什么它提取什么,但是 yield* 会继续向下请求,直到没的提取为止。

举个例子好了:


 function* a() { yield 1; yield 2; yield 3; }
function* b() { yield 4; yield* a(); yield 5; }
function* c() { yield 6; yield* b(); yield 7; }

for (let x of c()) console.log(x)    // 你觉得会输出什么?先自己试试看

答案是: 6, 4, 1, 2, 3, 5, 7 ,这个逻辑还算挺好理解吧?

注册问题好SB answered 10 years, 5 months ago

Your Answer