日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

异步编程Promise、Generator和Async

發布時間:2023/12/31 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 异步编程Promise、Generator和Async 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在JavaScript的世界里,對于異步編程存在如下幾種方案

1.回調函數;

2.事件觸發監聽;

3.發布訂閱者模式;

4.Promise

首先介紹Promise,然后介紹ES6提供的生成器函數,async函數。

1.Promise來源于社區,代表一個對象,它代表異步操作未來的一個結果(承諾)。它總共有三個狀態pending \ fulfilled \ rejected

另外,它的狀態翻轉路徑只有兩個:pending -> fulfilled or pending -> rejected,一旦狀態翻轉,就不可變了。它支持鏈式調用,支持錯誤傳遞,支持以同步代碼的方式寫異步操作。

Promise是一個對象,創建此對象實例的方法如下(可以理解resolve和reject是已返回的承諾對象未來回調函數的占位)

2.Generator函數是ES6提供的異步編程解決方案。對于Generator函數,可以將它理解為一個狀態機,封裝了多個內部狀態;此外它還是一個遍歷器生成函數,這個函數可以遍歷出狀態機的所有狀態。

函數特征:關鍵字function與函數名之間有*,函數體內部yeild關鍵字。

生成器函數與普通函數的區別:函數調用后不執行,而是返回一個指針對象(遍歷器對象)。調用對象的next()方法,執行一段yield邏輯。故函數的分段執行的,yield是暫停執行的標志,next()可以恢復執行

yield與return的區別:yield有記憶功能,return沒有;一個函數可以多次執行yeild,但只會return一次

3.async函數是Generator函數的語法糖,它進行了改進

(1) 自帶執行器;

(2) 返回值是Promise;

三家對比:使用Promise的異步代碼存在大量自有API的調用,操作本身的語義夾雜其中,不是很清晰;Generator函數實現的異步代碼語義比Promise清晰,但需要一個執行器;async函數的寫法最簡潔、符合語義,不需要執行器。

總結

以上是生活随笔為你收集整理的异步编程Promise、Generator和Async的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。