1. 程式人生 > >promise/async/await

promise/async/await

const clas sync函數 then 必須 函數 ise 基於 簡單

promise和async/await都是異步方案,promise是es6的新特性,而async/await是es7新出的特性。而對於async/await來說是基於promise的,他可以讓我們更加優雅的寫出代碼,而替代then()的寫法,例如:

const f = () => {

  return new Promise((resolve, reject) => {
    setTimeout(() => {
      reject(234);
    }, 2000);
  });
};
 
const testAsync = async () => {
  try
{ const t = await f(); console.log(t); } catch (err) { console.log(err); } }; testAsync();

在上述代碼中,同樣實現了代碼的先後滯留執行問題;需要註意的是await必須寫在async的作用域內;

一段話解釋就是:await後面等待的是一個結果,不僅僅可以等待一個promise對象,也可以是返回值;async函數是返回的是一個promise對象,一般是在async裏return返回值,如果沒有返回值,它會返回 Promise.resolve(undefined),但也不會阻塞後面的語句執行;await後面的值可以是async返回的promise,也可以是簡單的function函數,它需要包含在async函數內;並且通過try{}catch{}來解決promise.reject()報錯的問題。

promise和async/await都是實現異步的好方法,雖然現在還有兼容性的問題,但我們可以使用babel來轉換es6和es7。

參考博主https://www.cnblogs.com/abey/p/7054527.html

promise/async/await