Promise

PS~:?Promise是一個(gè)構(gòu)造函數(shù),自己身上有all、reject佳恬、resolve等幾個(gè)方法,原型上有then结耀、catch等幾個(gè)方法。

Promise 對(duì)象用于表示一個(gè)異步操作的最終狀態(tài)(完成或失敗),以及其返回的值牡彻。


一、Promise有以下三種狀態(tài):

pending: 初始狀態(tài)出爹,既不是成功讨便,也不是失敗狀態(tài) , ( 等待中 , 或者進(jìn)行中 , 表示還沒(méi)有得到結(jié)果 )

fulfilled: 意味著操作成功。

rejected: 意味著操作失敗以政。

Promise有兩種狀態(tài)改變的方式,而且狀態(tài)只能從pending改變?yōu)閞esolved或者rejected伴找,并且不可逆盈蛮。當(dāng)狀態(tài)發(fā)生變化,Promise.then綁定的函數(shù)就會(huì)被調(diào)用技矮。

注意:Promise一旦新建就會(huì)「立即執(zhí)行」抖誉,無(wú)法取消。這也是它的缺點(diǎn)之一衰倦。


二袒炉、我們使用new來(lái)構(gòu)建一個(gè)Promise。

Promise接受一個(gè)「函數(shù)」作為參數(shù)樊零,該函數(shù)的兩個(gè)參數(shù)分別是resolve和reject我磁。這兩個(gè)函數(shù)就是就是「回調(diào)函數(shù)」

resolve函數(shù)的作用:在異步操作成功時(shí)調(diào)用,并將異步操作的結(jié)果驻襟,作為參數(shù)傳遞出去夺艰;?

reject函數(shù)的作用:在異步操作失敗時(shí)調(diào)用,并將異步操作報(bào)出的錯(cuò)誤沉衣,作為參數(shù)傳遞出去郁副。


data為:字符串‘成功’ 或者字符串‘失敗’

如果異步操作獲得了我們想要的結(jié)果,那我們將手動(dòng)調(diào)用resolve函數(shù)豌习,在then的第一個(gè)作為參數(shù)的匿名函數(shù)中可以獲取數(shù)據(jù)存谎,如果我們得到了錯(cuò)誤的結(jié)果拔疚,調(diào)用reject函數(shù),在then函數(shù)的第二個(gè)作為參數(shù)的匿名函數(shù)中獲取錯(cuò)誤處理數(shù)據(jù)既荚。 這樣稚失,一個(gè)次完整的Promise調(diào)用就結(jié)束了。

三固以、.then()

then()方法執(zhí)行后會(huì)返回一個(gè)新的Promise實(shí)例墩虹。它有兩個(gè)參數(shù),分別為:Promise從pending變?yōu)閒ulfilled和rejected時(shí)的回調(diào)函數(shù)(第二個(gè)參數(shù)非必選)憨琳。這兩個(gè)函數(shù)都接受Promise對(duì)象傳出的值(data)作為參數(shù)诫钓。

語(yǔ)法

onCompleted(必傳參數(shù)):操作成功完成時(shí)要運(yùn)行的履行處理程序函數(shù)。

onRejected(選傳參數(shù)):操作被拒絕時(shí)要運(yùn)行的錯(cuò)誤處理程序函數(shù)篙螟。

Promise任務(wù)鏈

對(duì)于Promise的then()方法菌湃,then總是會(huì)返回一個(gè)Promise實(shí)例,因此你可以一直調(diào)用then遍略,形如p().then().then().then().then().then().....

1)如果then沒(méi)有傳入處理函數(shù)惧所,那么會(huì)返回一個(gè)繼承了上一個(gè)處理狀態(tài)的Promise對(duì)象

打印結(jié)果

2)如果then傳入處理函數(shù),那么默認(rèn)返回一個(gè)fulfilled/resolved狀態(tài)的Promise對(duì)象

打印結(jié)果

3)如果then傳入處理函數(shù)绪杏,通過(guò)處理函數(shù)顯示的return了一個(gè)新的Promise下愈,那么返回這個(gè)顯示的Promise對(duì)象

打印結(jié)果

弊端:不易中途終止后續(xù)任務(wù)執(zhí)行

四、.catch()

處理rejected 的情況蕾久,與then的第二個(gè)參數(shù)onRejected相同

打印結(jié)果↑
打印結(jié)果↑

可以捕獲.catch以上的任一錯(cuò)誤(前提是:.then中的onRejected函數(shù)沒(méi)有做任何處理)

補(bǔ)充~:

1).catch與.then中的onRejected函數(shù)沖突势似,如果前面.then中出行了onRejected函數(shù),.catch將不會(huì)執(zhí)行僧著。

2).catch執(zhí)行后會(huì)返回一個(gè)Promise對(duì)象履因,且狀態(tài)默認(rèn)為fulfilled/resolved(與.then相似)

五、.all? ?

多任務(wù)處理

打印結(jié)果

需要等(p1盹愚、p2)所有promise執(zhí)行完栅迄,才可以執(zhí)行then

六、.race

打印結(jié)果

(p1皆怕、p2)只要有一個(gè)執(zhí)行完毅舆,就會(huì)執(zhí)行then

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市端逼,隨后出現(xiàn)的幾起案子朗兵,更是在濱河造成了極大的恐慌,老刑警劉巖顶滩,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件余掖,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)盐欺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門赁豆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人冗美,你說(shuō)我怎么就攤上這事魔种。” “怎么了粉洼?”我有些...
    開封第一講書人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵节预,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我属韧,道長(zhǎng)安拟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任宵喂,我火速辦了婚禮糠赦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘锅棕。我一直安慰自己拙泽,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開白布裸燎。 她就那樣靜靜地躺著顾瞻,像睡著了一般。 火紅的嫁衣襯著肌膚如雪德绿。 梳的紋絲不亂的頭發(fā)上朋其,一...
    開封第一講書人閱讀 49,741評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音脆炎,去河邊找鬼。 笑死氓辣,一個(gè)胖子當(dāng)著我的面吹牛秒裕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播钞啸,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼几蜻,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了体斩?” 一聲冷哼從身側(cè)響起梭稚,我...
    開封第一講書人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎絮吵,沒(méi)想到半個(gè)月后弧烤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蹬敲,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年暇昂,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了莺戒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡急波,死狀恐怖从铲,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情澄暮,我是刑警寧澤名段,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站泣懊,受9級(jí)特大地震影響伸辟,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜嗅定,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一自娩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧渠退,春花似錦忙迁、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至梅誓,卻和暖如春恰梢,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背梗掰。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工嵌言, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人及穗。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓摧茴,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親埂陆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子苛白,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Promise 對(duì)象 Promise 的含義 Promise 是異步編程的一種解決方案,比傳統(tǒng)的解決方案——回調(diào)函...
    neromous閱讀 8,700評(píng)論 1 56
  • 本文適用的讀者 本文寫給有一定Promise使用經(jīng)驗(yàn)的人焚虱,如果你還沒(méi)有使用過(guò)Promise购裙,這篇文章可能不適合你,...
    HZ充電大喵閱讀 7,299評(píng)論 6 19
  • 一鹃栽、Promise的含義 Promise在JavaScript語(yǔ)言中早有實(shí)現(xiàn)躏率,ES6將其寫進(jìn)了語(yǔ)言標(biāo)準(zhǔn),統(tǒng)一了用法...
    Alex灌湯貓閱讀 820評(píng)論 0 2
  • 00私股、前言Promise 是異步編程的一種解決方案,比傳統(tǒng)的解決方案——回調(diào)函數(shù)和事件——更合理和更強(qiáng)大恩掷。它由社區(qū)...
    夜幕小草閱讀 2,128評(píng)論 0 12
  • Promise對(duì)象是一種解決異步問(wèn)題的方法倡鲸,還有的解決方案是asyns 和 await (es7) 這么是目前的終...
    站在大神的肩膀上看世界閱讀 1,259評(píng)論 0 6