1. 程式人生 > >ES6知識點整理之----async----語法

ES6知識點整理之----async----語法

整理 pro 指定 bsp fun clas 參數 function resolve

1、async函數返回一個 Promise 對象。

2、async函數內部return語句返回的值,會成為then方法回調函數的參數。

async function f() {
  return ‘hello world‘;
}

f().then(v => console.log(v))
// "hello world"

3、async函數內部拋出錯誤,會導致返回的 Promise 對象變為reject狀態。拋出的錯誤對象會被catch方法回調函數接收到。

4、只有async函數內部的異步操作全部執行完,才會執行then方法指定的回調函數。

5、await命令後面是一個 Promise 對象。如果不是,會被轉成一個立即resolve

的 Promise 對象。

async function f() {
  return await 123;
}

f().then(v => console.log(v))
// 123

await命令後面的 Promise 對象如果變為reject狀態,則reject的參數會被catch方法的回調函數接收到。

6、只要一個await語句後面的 Promise 變為reject,那麽整個async函數都會中斷執行。

  • 如果希望不要中斷,可以將await放在try...catch結構裏面。
  • 另一種方法是await後面的 Promise 對象再跟一個catch方法,處理前面可能出現的錯誤。

7、使用註意點:

  • 最好把await命令放在try...catch代碼塊中
  • 多個await命令後面的異步操作,如果不存在繼發關系,最好讓它們同時觸發
  • await命令只能用在async函數之中,如果用在普通函數,就會報錯。
  • 如果希望多個請求並發執行,可以使用Promise.all方法。
  • 目前,esm模塊加載器支持頂層await,即await命令可以不放在 async 函數裏面,直接使用。必須使用esm加載器,才會生效。

ES6知識點整理之----async----語法