如何講清楚async和await?

2021-10-09 13:46:30 字數 1766 閱讀 7306

async和await要搭配promise使用, 它進一步極大的改進了promise的寫法

來看乙個簡單的場景:

//假設有4個非同步方法要按順序呼叫

newpromise

(function

(resolve))}

).then

(function()

)})}

).then

(function()

)})}

).then

(function()

);

語法上不夠簡潔, 我們可以稍微改造一下

//將請求改造成乙個通用函式

function

request

(options)

//於是我們就可以來傳送請求了

)

然後我們再來重新改造開頭的**

request

("ajaxa").

then

((data)

=>).

then

((data)

=>).

then

((data)

=>

)

比起之前有了不小的進步, 但是看上去依然不夠簡潔

如果我能像使用同步**那樣, 使用promise就好了

於是, async \ await出現了

async

function

load()

await關鍵字使用的要求非常簡單, 後面呼叫的函式要返回乙個promise物件

load

()這個函式已經不再是普通函式, 它出現了await這樣"阻塞式"的操作

因此async關鍵字在這是不能省略的

那麼現在看, 這段**變得異常清秀

**的編寫順序

**的閱讀順序

**的執行順序

全部都是按照同步的習慣來的

是不是很方便.

到這你已經學會了async和await基本使用方式

下面來簡單解釋一下它的工作流程

//wait這個單詞是等待的意思

async

function

load()

如果後乙個請求需要前乙個請求的結果怎麼辦呢?

傳統的寫法是這樣的

request

("ajaxa").

then

((data1)

=>).

then

((data2)

=>).

then

((data3)

=>

)

而使用async/await是這樣的

async

function

load()

注意當乙個函式被async修飾以後, 它的返回值會被自動處理成promise物件

關於異常處理

async

function

load()

catch

(e)}

如何講清楚async和await?

async和await要搭配promise使用,它進一步極大的改進了promise的寫法來看乙個簡單的場景 假設有4個非同步方法要按順序呼叫 new promise function resolve then function then function then function 語法上不夠簡潔,...

程式設計師如何講清楚技術方案

最近在評審技術方案,和 review的時候,遇到剛入行的同學們,很多都講不清楚技術方案。具體表現是 上來不說需求,直接說演算法實現。台下一頭霧水,根本不知道設計方案是否合理。描述完需求後,又直接看 看表結構,沒有交代流程。比較簡單的演算法,描述的特別繞,讓人聽不懂。被別人指出後,覺得這東西這麼簡單,...

程式設計師如何講清楚技術方案

最近在評審技術方案,和 review的時候,遇到剛入行的同學們,很多都講不清楚技術方案。具體表現是 上來不說需求,直接說演算法實現。台下一頭霧水,根本不知道設計方案是否合理。描述完需求後,又直接看 看表結構,沒有交代流程。比較簡單的演算法,描述的特別繞,讓人聽不懂。被別人指出後,覺得這東西這麼簡單,...