zoukankan      html  css  js  c++  java
  • 理解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 运行成功了
    运行结束

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

  • 相关阅读:
    大道至简阅读笔记03
    团队项目二阶段-个人总结07
    团队项目二阶段-个人总结06
    团队项目二阶段-个人总结05
    学习进度条06
    领扣(LeetCode)单调数列 个人题解
    领扣(LeetCode)数字转换为十六进制数 个人题解
    领扣(LeetCode)字符串相加 个人题解
    领扣(LeetCode)删除链表中的节点 个人题解
    领扣(LeetCode)有效的括号 个人题解
  • 原文地址:https://www.cnblogs.com/guangzhou11/p/11299452.html
Copyright © 2011-2022 走看看