首頁  >  文章  >  web前端  >  實現Promise的手把手教程

實現Promise的手把手教程

coldplay.xixi
coldplay.xixi轉載
2020-09-02 17:22:461628瀏覽

實現Promise的手把手教程

【相關學習推薦:#javascript影片教學

前言

許多JavaScript 的初學者都曾感受過被回調地獄支配的恐懼,直到掌握了Promise 文法才算解脫。雖然很多語言都早已內建了Promise ,但是JavaScript 中真正將其發揚光大的還是jQuery 1.5 對$.ajax 的重構,支援了Promise,而且用法也和jQuery 推崇的鍊式呼叫不謀而合。後來 ES6 出世,大家才開始進入全民 Promise 的時代,再後來 ES8 又引進了 async 文法,讓 JavaScript 的非同步寫法更加優雅。

今天我們就一步一步實現一個 Promise,如果你還沒用過 Promise,建議先熟悉一下 Promise 語法再來閱讀本文。

建構子

在已有的 Promise/A 規範中並沒有規定promise 物件從何而來,在jQuery 中透過呼叫$.Deferred() 得到promise 對象,ES6 中透過實例化Promise 類別得到promise對象。這裡我們使用 ES 的語法,建構一個類,透過實例化的方式返回 promise 對象,由於 Promise 已經存在,我們暫時給這個類別取名為 Deferred

class Deferred {  constructor(callback) {    const resolve = () => {      // TODO
    }    const reject = () => {      // TODO
    }    try {
      callback(resolve, reject)
    } catch (error) {
      reject(error)
    }
  }
}复制代码

建構子接受一個 callback,呼叫 callback 的時候需傳入 resolve、reject 兩個方法。

Promise 的狀態

Promise 一共分為三個狀態:

實現Promise的手把手教程
  • 實現Promise的手把手教程:等待中,這是Promise 的初始狀態;
    實現Promise的手把手教程

以上是實現Promise的手把手教程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:learnku.com。如有侵權,請聯絡admin@php.cn刪除