Promise?挖胃?What?

本來想直接寫ES7的async-await的杂靶,后來一想這不就是Promise的語法糖嗎,算了酱鸭,還是寫Promise吧吗垮。

首先我們先明確一下Promise的定義:

Promise對象用于異步操作,它表示一個尚未完成且預計在未來完成的異步操作凹髓。

我們都知道js是單線程的烁登,一次只能執(zhí)行一個任務。這就是同步模式蔚舀。

而異步模式可以一起執(zhí)行多個任務饵沧,異步任務會在當前腳本的所有同步任務結(jié)束后才會執(zhí)行。

常見的異步任務有setTimeOut赌躺,ajax狼牺。

既然有了異步任務,那我們?yōu)槭裁催€要用Promise礼患?這就涉及到異步任務的執(zhí)行順序是钥,如果執(zhí)行多個有前后順序的異步任務,代碼就會非常難調(diào)試缅叠。而且悄泥,當我們在回調(diào)中需要使用結(jié)果再次進行回調(diào),這就很難受了肤粱,這就是ES5的回調(diào)地獄弹囚。但還好,Promise使我們看到了希望领曼。

Promise的真正強大之處在于它的多重鏈式調(diào)用鸥鹉,可以避免層層嵌套回調(diào)。


Promise基本用法

Promise對象代表一個未完成悯森、但預計將來會完成的操作宋舷。

它有三種狀態(tài):

pending:初始值

fulfilled:代表操作成功

rejected:代表操作失敗

promise

Promise實例生成以后,可以用then方法指定resolved狀態(tài)和reject狀態(tài)的回調(diào)函數(shù)瓢姻。


then方法

Promise新建后就會立即執(zhí)行祝蝠。而then方法中指定的回調(diào)函數(shù),將在當前腳本所有同步任務執(zhí)行完才會執(zhí)行


promise

上面的輸出就是before-resolved? ? after-resolved? ? outer? ? ?resolved

promise對象的錯誤绎狭,會一直向后傳遞细溅,直到被捕獲。即錯誤總會被下一個catch所捕獲儡嘶。

.then()

Promise.prototype.then(onFulfilled,onRejected)

.catch()

語法:Promise.prototype.catch(onRejected)

promise.then(onFulfilled).catch(onRejected)


.then中產(chǎn)生的異常能在.catch中捕獲


根據(jù)流程圖喇聊,可以看出,A拋錯時蹦狂,會按照 taskA → onRejected → finalTask這個流程來處理誓篱。A拋錯后,若沒有對它進行處理凯楔,狀態(tài)就會維持rejected窜骄,taskB不會執(zhí)行,直到catch了錯誤摆屯。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末邻遏,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子虐骑,更是在濱河造成了極大的恐慌准验,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件廷没,死亡現(xiàn)場離奇詭異糊饱,居然都是意外死亡,警方通過查閱死者的電腦和手機颠黎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門济似,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人盏缤,你說我怎么就攤上這事”推耍” “怎么了唉铜?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長律杠。 經(jīng)常有香客問我潭流,道長,這世上最難降的妖魔是什么柜去? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任灰嫉,我火速辦了婚禮,結(jié)果婚禮上嗓奢,老公的妹妹穿的比我還像新娘讼撒。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布根盒。 她就那樣靜靜地躺著钳幅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪炎滞。 梳的紋絲不亂的頭發(fā)上敢艰,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天,我揣著相機與錄音册赛,去河邊找鬼钠导。 笑死,一個胖子當著我的面吹牛森瘪,可吹牛的內(nèi)容都是我干的牡属。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼柜砾,長吁一口氣:“原來是場噩夢啊……” “哼湃望!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起痰驱,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤证芭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后担映,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體废士,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年蝇完,在試婚紗的時候發(fā)現(xiàn)自己被綠了官硝。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡短蜕,死狀恐怖氢架,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情朋魔,我是刑警寧澤岖研,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站警检,受9級特大地震影響孙援,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜扇雕,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一拓售、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧镶奉,春花似錦础淤、人聲如沸崭放。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽莹菱。三九已至,卻和暖如春吱瘩,著一層夾襖步出監(jiān)牢的瞬間道伟,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工使碾, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蜜徽,地道東北人。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓票摇,卻偏偏與公主長得像拘鞋,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子矢门,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348

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

  • Promise 對象 Promise 的含義 Promise 是異步編程的一種解決方案盆色,比傳統(tǒng)的解決方案——回調(diào)函...
    neromous閱讀 8,702評論 1 56
  • Promiese 簡單說就是一個容器,里面保存著某個未來才會結(jié)束的事件(通常是一個異步操作)的結(jié)果祟剔,語法上說隔躲,Pr...
    雨飛飛雨閱讀 3,352評論 0 19
  • Promise 的含義 一句話概括一下promise的作用:可以將異步操作以同步操作的流程表達出來,避免了層層嵌套...
    雪萌萌萌閱讀 5,457評論 0 7
  • 目錄:Promise 的含義基本用法Promise.prototype.then()Promise.prototy...
    BluesCurry閱讀 1,490評論 0 8
  • 編后吐槽:寫的快花眼物延,很詳細宣旱,耐心看必受益匪淺 JavaScript的執(zhí)行環(huán)境是「單線程」的。所謂單線程叛薯,是指JS...
    果汁涼茶丶閱讀 4,622評論 8 27