javascript中的anync/await
阿新 • • 發佈:2021-06-10
javascript中的async,await
Async( 宣告一個非同步函式)
- 自動將常規函式轉換為Promise。
- 非同步函式允許使用await。
- 當呼叫非同步函式時,使用其主體中返回的內容。
Await(暫停非同步函式的執行)
- 當置於Promise呼叫前面時,await強制其餘程式碼等待,直到該Promise完成並返回結果。
- await僅適用於Promises,它不適用於回撥。
- await只能在非同步函式內部使用(在ansyc中)。
使用async/await會比Promise好嘛?
- 使用Async / Await時,我們仍在使用Promise。
async function getABC() { let A = await getValueA(); // 2 second to finish let B = await getValueB(); // 4 second to finish let C = await getValueC(); // 3 second to finish return A*B*C; }
async function getABC() {
// Promise.all()允許我們同時傳送所有請求。
let results = await Promise.all([ getValueA, getValueB, getValueC ]);
return results.reduce((total,value) => total * value);
}
- 第二種方法優於第一種方法,第一種方法需要等待第一個方法執行完才執行第二方法....,第二種方法非同步執行,等到所有的都執行完畢,顯示。
- 如果多次非同步請求得到的值不相互影響,建議使用Promise,否則建議使用async/await;
如何處理Async / Await中的錯誤
-
使用try / catch塊中捕獲任何意外錯誤;
-
async function doSomethingAsync(){ try { // 此非同步呼叫可能會失敗. let result = await someAsyncCall(); } catch(error) { // 我們將在這裡發現錯誤 } }
-
const result = await someAsyncCall().catch()
-