理解Promise (2)

一进来 我们开始执行 executor函数 传递两个参数 再调用 then 方法 ,then 方法里面有 OnResolve方法,OnReject 方法
 在then 方法中,我们一开始的状态是pending 然后根据 状态的不同 调用不同的函数,
在两个不同的函数中 我们 进行判断 因为状态一开始都是有 pending = > success 或者 pending =>fail
判断 时修改 状态 和 显示值
function  Promise(executor) {
    let  self  = this;
    self.value = null;
    self.reason = null;
    //设置默认状态
    self.status = 'pending'
    //成功函数
    function  resolve(value) {
        if(self.status=='pending') {
            self.status = 'success';
            // console.log(self.value);
            self.value =  '运行成功了'
        }
    };
    //失败函数
    function  reject(reason) {
        if(self.status == 'pending') {
            self.status = 'fail';
            self.reason = '运行失败了'
        }
    }
    //默认立即执行函数 传递两个参数 
    executor(resolve,reject);
}
Promise.prototype.then =  function(OnResolve,OnReject) {
    console.log(this.value)
        if(this.status == 'success') {
            OnResolve(this.value);
        }
        if(this.status =='fail') {
            OnReject(this.reason);
        }
};
module.exports= Promise;
//一进来 我们开始执行 executor函数 传递两个参数 再调用 then 方法 ,then 方法里面有  OnResolve方法,OnReject 方法
// then 方法中,我们一开始的状态是pending  然后根据 状态的不同 调用不同的函数,
// 在两个不同的函数中 我们 进行判断 因为状态一开始都是有 pending  = >  success 或者 pending =>fail
// 判断 时修改 状态 和 显示值
 

 

运行:
开始运行了
运行成功了
success 运行成功了
运行结束

这里还没有进行异步的处理

posted @ 2019-08-04 20:04  1点  阅读(186)  评论(0编辑  收藏  举报