美文网首页
ES6-Promise简单理解

ES6-Promise简单理解

作者: 王二麻子88 | 来源:发表于2021-02-23 17:31 被阅读0次
    class MyPromise{
        callbacks = [];
        constructor(fn) {
            fn(this._resolve.bind(this));
        }
        then(onFulfilled) {
            this.callbacks.push(onFulfilled);
        }
        _resolve(value) {
            setTimeout(() => {
                this.callbacks.forEach(fn => fn(value));
            });
            // this.callbacks.forEach(fn => fn(value));
        }
    }
    
    // 应用
    let p = new MyPromise(resolve => {
        setTimeout(() => {
            console.log('done');
            resolve('5秒');
        }, 5000);
    }).then((tip) => {
        console.log(tip);
    })
    
    1. 首先构建一个 Promise类
      在类中定义好三个方法
      构造方法 ==> 构造方法的传参必须是一个函数,
      成功之后处理的resolve方法
      then方法

    注意:
    .then方法只是负责将方法推送到Promise中, 不负责具体的执行

    构造方法中执行 构造实例化时传进来的函数, 该函数一般会传 resolve参数和 reject

    该函数在执行的过程中会传入 Promise类本身定义 resolve方法, 该方法才是具体的 .then函数中 具体的执行程序

    由此可知, 在执行 _resolve方式时加入 try ... catch... 错误执行的程序会执行 _reject()

    为了能在 .then 之后才执行 _resolve程序, 该程序本身需要加入 setTimeout(( ... )=>{}) 延迟机制

    相关文章

      网友评论

          本文标题:ES6-Promise简单理解

          本文链接:https://www.haomeiwen.com/subject/juqdfltx.html