首页 > 其他 > 详细

从底层来看Promise

时间:2021-04-03 00:27:38      阅读:22      评论:0      收藏:0      [点我收藏+]

感悟:有的知识你从”底层“来看会觉得很清晰!

注意:这个源码并不是实际的Promise实现。我主要是想主要是想通模仿实现Promise来学习!

class Promise {
    constructor(executor) {
        this.resolvedCallbacks = [];
        this.rejectedCallbacks = [];
        this.state = "PENDING";
        this.value = "";
        //这里解释了为什么必是传入resolve,reject;
        executor(this.resolve.bind(this), this.reject.bind(this));
    }

    resolve(value) {
        if (this.state === ‘PENDING‘) {
            // 解释了为什么执行了resolve方法会将promise
            this.state = "RESOLVED";
            // 这里解释了为什么resolve传入的值会改变promise的value属性
            this.value = value;

            this.resolvedCallbacks.map(callback => callback(value));
        }
    }
    reject(value) {
        if (this.state === ‘PENDING‘) {
            // 解释了为什么执行了reject方法会将Promise的实例状态变为REJECTED
            this.state = "REJECTED";
            // 这里解释了为什么reject传入的值会改变promise的value属性
            this.value = value;

            this.rejectedCallbacks.map(callback => callback(value));
        }
    }


    then(onFulfilled, onRejected) {
        if (this.state === "PENDING") {
            this.resolvedCallbacks.push(onFulfilled);
            this.rejectedCallbacks.push(onRejected);
        }

        if (this.state === "RESOLVED") {
            onFulfilled(this.value);
        }
        if (this.state === ‘REJECTED‘) {
            onRejected(this.value);
        }
    }
}

从底层来看Promise

原文:https://www.cnblogs.com/rookie123/p/14612671.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!