手写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';

        }

    }

}

···

你可能感兴趣的:(手写promise)