promise原理快速记忆

852 阅读1分钟

核心记忆点:将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);
        })