JavaScript await函數(shù)

2020-07-20 15:00 更新

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


語(yǔ)法

[return_value] = await expression;

表達(dá)式

一個(gè) Promise 對(duì)象或者任何要等待的值。

返回值

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

描述

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

例子

如果一個(gè) Promise 被傳遞給一個(gè) 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();

如果該值不是一個(gè) Promise,await 會(huì)把該值轉(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)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)