手写promise

···

function Promise(executor) {

    var _this = this;

    this.state = 'pending'; //状态

    this.value = undefined; //成功结果

    this.reason = undefined; //失败原因

    this.onFulfilledFunc = [];//保存成功回调

    this.onRejectedFunc = [];//保存失败回调

    executor(resolve, reject); //马上执行

    function resolve(value) {

        console.log(value)

        if (_this.state === 'pending') {

            _this.value = value;//保存成功结果

            _this.onFulfilledFunc.forEach(fn => fn(value));

            _this.state = 'resolved';

        }

    }

    function reject(reason) {

        if (_this.state === 'pending') {

            _this.reason = reason;//保存失败结果

            _this.onRejectedFunc.forEach(fn => fn(reason));

            _this.state = 'rejected';

        }

    }

}

···

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容