node.js - generator中yield *next 与 yield next的区别是什么?
怪我咯
怪我咯 2017-04-17 11:14:24
0
2
600

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

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回覆(2)
小葫芦

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,這個邏輯還算挺好理解吧?

大家讲道理

其實可以簡單的理解為:yield next是讓generator回傳next,而yield *next裡的next本身就是一個generator,外層generator回傳這個next generator的回傳值

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板