async await(優勢在於處理then鏈)

2021-10-24 09:22:24 字數 1473 閱讀 1918

await 可以認為是 async wait 的簡寫,await 用於等待乙個非同步方法執行完成。

async/await其實是promise的語法糖,它能實現的效果都能用then鏈來實現,它是為優化then鏈而開發出來的。從字面上來看,async是「非同步」的簡寫,await譯為等待,所以我們很好理解async宣告function是非同步的,await等待某個操作完成。當然語法上強制規定await只能出現在asnyc函式中

async的用法,它作為乙個關鍵字放到函式前面,這樣普通函式就變為了非同步函式

非同步async函式呼叫,跟普通函式的使用方式一樣

非同步async函式返回乙個promise物件

async函式配合await關鍵字使用(阻塞**往下執行)

是非同步方法,但是阻塞式的

方便級聯呼叫:即呼叫依次發生的場景;

同步**編寫方式: promise使用then函式進行鏈式呼叫,一直點點點,是一種從左向右的橫向寫法;async/await從上到下,順序執行,就像寫同步**一樣,更符合**編寫習慣;

多個引數傳遞: promise的then函式只能傳遞乙個引數,雖然可以通過包裝成物件來傳遞多個引數,但是會導致傳遞冗餘資訊,頻繁的解析又重新組合引數,比較麻煩;async/await沒有這個限制,可以當做普通的區域性變數來處理,用let或者const定義的塊級變數想怎麼用就怎麼用,想定義幾個就定義幾個,完全沒有限制,也沒有冗餘工作;

同步**和非同步**可以一起編寫: 使用promise的時候最好將同步**和非同步**放在不同的then節點中,這樣結構更加清晰;async/await整個書寫習慣都是同步的,不需要糾結同步和非同步的區別,當然,非同步過程需要包裝成乙個promise物件放在await關鍵字後面;

sync/await是對promise的優化async/await是基於promise的,是進一步的一種優化,不過在寫**時,promise本身的api出現得很少,很接近同步**的寫法;

async主要來處理非同步的操作,

需求:執行第一步,將執行第一步的結果返回給第二步使用。在ajax中先拿到乙個介面的返回資料,後使用第一部返回的資料執行第二步操作的介面呼叫,達到非同步操作。

async await處理非同步問題

在編寫網頁的時候我們常常會遇到非同步問題,async await是es6提出的解決非同步的方法,下面我們來看看這個方法怎麼實現解決非同步的,function foo 1000 console.log 2 答案肯定是2,1 因為settimeout是乙個非同步執行語句,所以下面乙個會先執行完後再執行非...

async await進行非同步處理

參考 await 只能出現在 async 函式中 async 函式返回的是乙個 promise 物件。async 函式 包含函式語句 函式表示式 lambda表示式 會返回乙個 promise 物件,如果在函式中return乙個直接量,async 會把這個直接量通過promise.resolve 封...

vue中async await請求處理

promise.all 用法示例 const wait ms new promise resolve,reject ms resolve ms const pa promise.all wait 3000 wait 1000 wait 2000 依次列印 wait 1000ms wait 2000m...