Promise手写

function Promise(executor){

    //在内部中定义一个状态,当前promise状态
    let self = this
    self.value = undefined
    self.reason = undefined
    self.status = 'pending' //默认promise状态是padding

    function resolve(value){
        if(self.status === 'pending'){
            self.value = value
            self.status = 'resolved';       //成功了
        }
    }

    function reject(reason){
        if(self.status === 'pending'){
            self.reason = reason
            self.status = 'rejected'    //失败态
        }       
    }

    executor(resolve,reject)
}

Promise.prototype.then = function (onFulfilled,onRejected){
    let self = this
    if(self.status === 'resolved') {
        onFulfilled(self.value)
    }

    if(self.status === 'rejected') {
        onRejected(self.reason)
    }

}

module.exports = Promise
复制代码
相关文章
相关标签/搜索