共计 759 个字符,预计需要花费 2 分钟才能阅读完成。
核心代码
为了精简代码,下面的 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 不会像我说的这么简单,但是核心原理就是这个样的。