1 分鐘讀完 JavaScript Async/Await Explained in 10 Minutesjavascript
之前咱們使用 callback。java
後來咱們使用 Promise。git
如今咱們使用 Async/Await。github
Async - 定義異步函數(async function someName(){...}
)異步
await
Await - 暫停異步函數的執行 (var result = await someAsyncCall();
)async
await
等待 Promise 完成,並返回 Promise 的結果await
只能和 Promise 一塊兒使用,不能和 callback 一塊兒使用await
只能用在 async
函數中不會。函數
Promise.all
async function getABC() {
let A = await getValueA(); // getValueA 花費 2 秒
let B = await getValueB(); // getValueA 花費 4 秒
let C = await getValueC(); // getValueA 花費 3 秒
return A*B*C;
}複製代碼
每次遇到 await
關鍵字時,Promise 都會停下在,一直到運行結束,因此總共花費是 2+4+3 = 9 秒。await
把異步變成了同步。ui
async function getABC() {
// Promise.all() 容許同時執行全部的異步函數
let results = await Promise.all([ getValueA, getValueB, getValueC ]);
return results.reduce((total,value) => total * value);
}複製代碼
函數總耗時爲 4 秒(getValueB
的耗時)。spa
在 Async/Await 語法中,咱們能夠使用 try/catch 進行錯誤處理。在 Promise 中的 .catch()
分支會進入 catch
語句。 code
閱讀原文:JavaScript Async/Await Explained in 10 Minutes
討論地址:10 分鐘學會 JavaScript 的 Async/Await
若是你想參與討論,請點擊這裏