2021-12-27Promise

image.png

catch和then和finally的用法

const p1= new Promise( (resolutionFunc,rejectionFunc) => {
1:resolutionFunc()
2:rejectionFunc()
3:console.long(a) 或者 throw 'a';
});
let p2 = p1.then()
let p3 = p1.then(v => { console.log(v) })
let p4 = p1.then(v => { return '444' })

image.png

1:new Promise里面寫resolutionFunc(),就會(huì)觸發(fā)p1.then(),第一個(gè)參數(shù),并執(zhí)行
2:new Promise里面寫rejectionFunc(),就會(huì)觸發(fā)p1.then(),第二個(gè)參數(shù),并執(zhí)行
3:new Promise里面寫錯(cuò)誤代碼,就會(huì)觸發(fā)p1.then(),第二個(gè)參數(shù),并執(zhí)行

4:若p1.then()的第二個(gè)參數(shù)沒有寫,那么就會(huì)觸發(fā).p1.catch(),并執(zhí)行
5:若p1.then()的第二參數(shù)和p1.then().catch()同時(shí)存在,出現(xiàn)異常,優(yōu)先選擇then里面的執(zhí)行
6:new Promise,除了里123這種類型,其他的不會(huì)觸發(fā)then,因?yàn)椴粫?huì)把pending狀態(tài)改變
7:p1.then()整體是什么狀態(tài),取決于上一個(gè)是什么狀態(tài)
8:.then整體的值是什么,【成功】
a:當(dāng)代碼里什么都沒有,return上一個(gè)的值,
b:當(dāng)代碼體寫了代碼,沒有寫return,那就是return undefined
c:當(dāng)代碼體寫了代碼,寫return,那就是return寫的那個(gè)值


image.png

9:.then整體的值是什么,【失敗】
a:當(dāng)代碼里什么都沒有,return上一個(gè)的值,
b:當(dāng)代碼體寫了代碼,沒有寫return,那就是上一個(gè)值
c:當(dāng)代碼體寫了代碼,寫return,那就是return寫的那個(gè)值

image.png

10:不管promise最后的狀態(tài),在執(zhí)行完then或catch指定的回調(diào)函數(shù)以后,都會(huì)執(zhí)行finally方法指定的回調(diào)函數(shù)。

tips:new promise必須把狀態(tài)改變,才能執(zhí)行下面的then代碼,而then雖然返回的也是實(shí)例,不需狀態(tài)改變,因?yàn)闀?huì)使用上一個(gè)的狀態(tài)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容