ES6-Promise简单理解

2021-02-23  本文已影响0人  王二麻子88
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(( ... )=>{}) 延迟机制

上一篇下一篇

猜你喜欢

热点阅读