實現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不會像我說的這麼簡單,但是核心原理就是這個樣的。