JavaScript await函數(shù)

2020-07-20 15:00 更新

await  操作符用于等待一個Promise 對象。它只能在異步函數(shù) async function 中使用。


語法

[return_value] = await expression;

表達式

一個 Promise 對象或者任何要等待的值。

返回值

返回 Promise 對象的處理結(jié)果。如果等待的不是 Promise 對象,則返回該值本身。

描述

  • await 表達式會暫停當(dāng)前 async function 的執(zhí)行,等待 Promise 處理完成。若 Promise 正常處理(fulfilled),其回調(diào)的resolve函數(shù)參數(shù)作為 await 表達式的值,繼續(xù)執(zhí)行 async function。
  • 若 Promise 處理異常(rejected),await 表達式會把 Promise 的異常原因拋出。
  • 另外,如果 await 操作符后的表達式的值不是一個 Promise,則返回該值本身。

例子

如果一個 Promise 被傳遞給一個 await 操作符,await 將等待 Promise 正常處理完成并返回其處理結(jié)果。

function resolveAfter2Seconds(x) {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve(x);
    }, 2000);
  });
}

async function f1() {
  var x = await resolveAfter2Seconds(10);
  console.log(x); // 10
}
f1();

如果該值不是一個 Promise,await 會把該值轉(zhuǎn)換為已正常處理的Promise,然后等待其處理結(jié)果。

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();


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號