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 运行成功了
    运行结束

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

  • 相关阅读:
    HTML DOM 教程Part5 [DOM 冷门对象] 摘录自W3C School
    Javascript DOM 的节点操作示例
    CSS 教程Part2 [背景、文本、字体](摘录自 W3C School)
    Stream Part.1
    Thread.Join() 方法
    CSS 教程Part3 [列表、表格、轮廓](摘录自 W3C School)
    使用委托异步调用方法让程序并行运行
    JSON 数据格式
    C# WinForm 程序中获取本机IP地址
    微软示例代码 for ManualResetEvent
  • 原文地址:https://www.cnblogs.com/guangzhou11/p/11299452.html
Copyright © 2011-2022 走看看