咱們書接上文( 點(diǎn)我查看 ),繼續(xù)咱們的手寫 Promise
:
# 第四步:Promise .resolve() / reject() 的實(shí)現(xiàn)
/**
* @func Promise 函數(shù)對象的 resolve()
* @param value 成功的回調(diào)函數(shù)
* @returns 返回一個指定結(jié)果 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 函數(shù)對象的 reject()
* @param reason 失敗的回調(diào)函數(shù)
* @returns 返回一個指定結(jié)果 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)}
)
輸出結(jié)果分別為: 1 3 2 4
哇哦尘喝,又又簡單實(shí)現(xiàn)了一小步薯定,我們不驕傲抵栈,繼續(xù)努力~~~