await 操做符用於等待一個Promise 對象。它只能在異步函數 async function 中使用。
await 表達式會暫停當前 async function 的執行,等待 Promise 處理完成。
若 Promise 正常處理(fulfilled),其回調的resolve函數參數做爲 await 表達式的值,繼續執行 async function。
若 Promise 處理異常(rejected),await 表達式會把 Promise 的異常緣由拋出。
另外,若是 await 操做符後的表達式的值不是一個 Promise,則返回該值自己。
若是該值不是一個 Promise,await 會把該值轉換爲已正常處理的Promise,而後等待其處理結果。
async function f2() {
var y = await 20;
console.log(y); // 20
}
f2();
若是 Promise 處理異常,則異常值被拋出。
async function f3() {
try {
var z = await Promise.reject(30);
} catch (e) {
console.log(e); // 30
}
}
f3();
reject 和 then ,catch問題
當咱們reject()一個東西的時候,咱們在then中函數的第二個參數中能夠接收到reject的值,若是沒有回調函數沒有第二個參數,reject()的值能夠用catch接受。可是resolve的值必定在then中接受。因爲等網絡出現的非邏輯問題只能在catch中接收。