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
把異步變成了同步。spa
async function getABC() { // Promise.all() 容許同時執行全部的異步函數 let results = await Promise.all([ getValueA, getValueB, getValueC ]); return results.reduce((total,value) => total * value); }
函數總耗時爲 4 秒(getValueB
的耗時)。3d
在 Async/Await 語法中,咱們能夠使用 try/catch 進行錯誤處理。在 Promise 中的 .catch()
分支會進入 catch
語句。code
閱讀原文:JavaScript Async/Await Explained in 10 Minutes
討論地址:10 分鐘學會 JavaScript 的 Async/Await
若是你想參與討論,請點擊這裏