天天看點

JavaScript異步程式設計---Generator異步方案、Async / Await文法糖Generator異步解決方案Async / Await文法糖

Generator異步解決方案

借助于yield能夠暫停生成器函數執行的特點,借助于生成器函數實作一個更優的異步程式設計體驗。

JavaScript異步程式設計---Generator異步方案、Async / Await文法糖Generator異步解決方案Async / Await文法糖

除此之外,還需要判斷每個next方法傳回值中的done屬性來判斷是否還有下個next。是以在此我們逸刻使用遞歸方式實作:

JavaScript異步程式設計---Generator異步方案、Async / Await文法糖Generator異步解決方案Async / Await文法糖

Async / Await文法糖

在ES2017中新增了該文法糖,提供了扁平化的異步程式設計體驗,并且是語言層面标準的文法,使用起來更加的友善。Async 其實就是生成器函數的更友善的文法糖,是以使用方式上有些類似。

JavaScript異步程式設計---Generator異步方案、Async / Await文法糖Generator異步解決方案Async / Await文法糖

該文法糖的好處是,不用再通過一個類似于handresulr這樣的一個執行器,因為是語言層面的标準文法,其次async可以傳回一個promise對象,這讓我們可以對整體的代碼進行控制。

繼續閱讀