實現Pormise,超級精簡,一看就能明白Promise的運行原理

核心代碼

爲了精簡代碼,下面的Promise實現中去掉了代碼校驗,這樣方便小夥伴看到Promise的核心邏輯。ES6語法。

活不多說,直接放代碼

class PromiseTest{
    executor = (resolve,reject)=>{};
    constructor(executor){
        this.executor = executor
    }
    then(sucess,error){
        function resolve(value){
            sucess(value)
        }
        function reject(value){
            error(value)
        }
        this.executor(resolve,reject)
    }
}

有沒有很簡單,下面對照最典型的實用方法非小夥伴講解一些這個簡單的代碼。

代碼測試和代碼講解

const promise = new PromiseTest(function(resolve, reject) {
 if (true){
    resolve("sucess");
  } else {
    reject("erorr");
  }
});

promise.then(function (value) {
    console.log(value)
}, function (error) {
    console.log(error)
}); // => sucess

簡單的歸納一下,Promise構建的時候把你傳入的executor(resolve, reject){}函數緩存到返回的promise對象中,當你調用promise的then方法的時候,就是執行你寫的executor(resolve, reject){}函數,並then方法中定義的兩個回調函數替換替換到構建Promise時定義的executor(resolve, reject){}中的兩個入參。

當然promise不會像我說的這麼簡單,但是核心原理就是這個樣的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章