咱们书接上文( 点我查看 ),继续咱们的手写 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
哇哦,又又简单实现了一小步,我们不骄傲,继续努力~~~
网友评论