核心代碼
爲了精簡代碼,下面的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不會像我說的這麼簡單,但是核心原理就是這個樣的。