Generator

生成器函數(shù)(Generator Function)

  1. 生成器函數(shù)不能直接作為函數(shù)來使用
  2. 執(zhí)行生成器函數(shù)會返回一個生成器對象
  3. 生成器函數(shù) 定義了生成器的執(zhí)行內(nèi)容
function* genFun() { 
   yeild 'state1';
   yeild 'state2';
   //...
   return 'end';
}```

# yield 語句
yield 語句的作用并非退出函數(shù)體,而是**切出當(dāng)前函數(shù)的運(yùn)行(協(xié)程)**,并可以將一個值(可以是任何類型)帶到**主線程**中。


# 生成器(Generator)
用于**運(yùn)行**和**暫停**生成器內(nèi)容和**接受其中的值**。

const gen = genFn() //


# 生成器de操作方法

class Generator {
next(value) // 獲取下一個生成器切出狀態(tài)。
throw(error) // 向當(dāng)前生成器執(zhí)行對象拋出一個錯誤,并終止生成器的運(yùn)行。
@iterator // 暫不考慮。。。
}


# 總結(jié)

> 從語法上,可以把它理解成
> 1. GeneratorFunction 是一個狀態(tài)機(jī),封裝了多個內(nèi)部狀態(tài) yield 。
> 2. 執(zhí)行 GeneratorFunction 會返回一個遍歷器對象Generator
> 3. 遍歷器對象 Generator 可以依次遍歷 GeneratorFunction 內(nèi)部的每一個狀態(tài) yield。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容