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...