核心记忆点:将then的callback放到resolve函数中执行 粗略版本promise源码:
function myPromise(cb) {
this.status = false;
this.callback = null;
let resolve = arg=>{
this.status = true;
if(this.status) {
this.callback(arg);
this.status = false;
}
}
let reject = arg=>{
this.status = true;
if(this.status) {
this.callback(arg);
this.status = false;
}
}
cb(resolve, reject);
}
myPromise.prototype.then = function(callback){
this.callback = callback;
}
var p1 = new myPromise(function(resolve, reject){
setTimeout(()=>{
resolve("我是成功的结果");
// reject("我是失败的结果");
},300)
});
p1.then(function(value){
console.log(value);
})