美文网首页
手撕Promise真面目(手写 promise 代码没有那么难)

手撕Promise真面目(手写 promise 代码没有那么难)

作者: 酷酷的凯先生 | 来源:发表于2020-11-03 11:15 被阅读0次

咱们书接上文( 点我查看 ),继续咱们的手写 Promise

# 第四步:Promise .resolve() / reject() 的实现

/**
 * @func Promise 函数对象的 resolve()
 * @param value 成功的回调函数 
 * @returns 返回一个指定结果 value 的成功的 Promise
 */ 
Promise.resolve = function (value) {
    // 返回一个成功 / 失败的 Promise
    return new Promise((resolve, reject)=>{
        // 判断 value 的类型
        if(value instanceof Promise){
            // 如果是Promise
            value.then(resolve, reject)
        }else{
            // 如果不是 Promise
            resolve(value)
        }
    })
}

/**
 * @func Promise 函数对象的 reject()
 * @param reason 失败的回调函数
 * @returns 返回一个指定结果 reject 的失败的 Promise
 */ 
Promise.reject = function (reason) {
    // 返回一个失败的 Promise
    return new Promise((undefined,reject)=>{
        reject(reason)
    })
}

测试demo

const p1 = Promise.resolve(1);
const p2 = Promise.resolve( Promise.resolve(2) );
const p3 = Promise.reject(3);
const p4 = Promise.resolve( Promise.reject(4) );

p1.then(
    value => { console.log(value) },
    reason => { console.log(reason)}
)

p2.then(
    value => { console.log(value) },
    reason => { console.log(reason)}
)

p3.then(
    value => { console.log(value) },
    reason => { console.log(reason)}
)

p4.then(
    value => { console.log(value) },
    reason => { console.log(reason)}
)
输出结果分别为: 1  3  2  4

哇哦,又又简单实现了一小步,我们不骄傲,继续努力~~~

下一篇:Promise .all() / race() 的实现

相关文章

网友评论

      本文标题:手撕Promise真面目(手写 promise 代码没有那么难)

      本文链接:https://www.haomeiwen.com/subject/bnimvktx.html