欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

易理解的Promise封装

程序员文章站 2022-07-02 18:55:00
...
//promise英文中叫做承诺
//成功resolve  失败reject 正在过程中 pending 没人接的时候


var obj = {
    status: '',
    value: ''
}
function Apromise(fn) {
    obj.status = 'pending'
    obj.value = ''
    function resolve(value) {
        if (obj.status === 'pending') {
            obj.status = 'resolve'
            obj.value = value
        }
    }
    function reject(value) {
        if (obj.status === 'pending') {
            obj.status = 'reject'
            obj.value = value
            console.log(456456);
        }
    }
    console.log(123123);
    fn(resolve, reject)
}
Apromise.prototype.then = function (resolve, reject) {
    if (obj.status === 'resolve') {
        resolve(obj.value)
    }
    if (obj.status === 'reject') {
        reject(obj.value)
    }
}
let p = new Apromise((resolve, reject) => {
    //resolve('1')
    reject('2')
}).then(res => {
    console.log(res)
}, err => {
    console.log(err)
})

实例化promise:相当于如果有成功的条件就把function Apromise中的成功函数放到最下面进行执行
.then:相当于把then中的函数放入Apromise.prototype.then中进行根据之前设置的状态执行输出(obj.value)

总结 没看源码现在感觉就是形参实参的来回调用 没啥的