JavaScript中的Promise機制

Promise是什么

Promise是異步處理對象以及對其進行各種操作的組件蚓哩。一個Promise對象代表一個目前不可用亭饵,但是在未來的某個時間點可以被解析值妥箕。允許以同步的方式編寫異步代碼抒寂。

Promise出現的原因

在promise之前洪灯,在JS中的異步編程都是采用回調函數和事件的方式隔心,但是這種編程方式在處理復雜的業(yè)務情況下白群,很容易出現回調多層嵌套,使得代碼很難理解和被維護硬霍。
Promise改善了這種情形下的異步編程的解決方案帜慢,它是由社區(qū)提出和實現的。ES6將其寫進了語言標準唯卖,統(tǒng)一了用法粱玲,并且提供了一個原生的對象Promise

Promise的API

promise.png

從這個簡單的例子可以看出我們需要基本掌握的是

  • Promise的構造函數
  • resolve()、reject()
  • then()

a拜轨、promise的構造函數

demo.png

執(zhí)行結果如下:


reslult.png

可以看到先輸出了promise抽减,再輸出了end
當通過Promise構造函數實例化一個對象時橄碾,會傳遞一個函數作為參數卵沉,而且這個函數在新建一個Promise后,會立即執(zhí)行堪嫂。

b偎箫、resolve/reject

在Promise中,Promise操作有3中狀態(tài)皆串,但是其只存在于三種狀態(tài)的一種淹办。其關系如下:

關系圖.png

注意:這種狀態(tài)的改變只能從未完狀態(tài)到完成態(tài)或失敗態(tài)轉變,不能逆反恶复。完成態(tài)和失敗態(tài)不能相互轉化怜森,而且速挑,狀態(tài)一旦轉化則不能修改。
只有異步操作的結果副硅,才能決定當前狀態(tài)是哪一種狀態(tài)姥宝,任何其他操作無法改變這一狀態(tài)。
通常恐疲,我們在聲明一個Promise對象的實例時腊满,在我們傳入的匿名參數中:

  • resolve代表完成態(tài)后的操作
  • reject代表失敗態(tài)后的操作

c、then

了解到上面那些之后培己,我們也許會問then方法的作用是什么呢碳蛋,resolvereject又是從哪里傳遞過來的。
其實省咨,我們在實例化Promise對象時肃弟,調用該對象的實例方法then,其中then的第一個參數對應著完成狀態(tài)的操作零蓉,也就是resolve笤受,第二個參數代表著失敗態(tài)的操作,是reject敌蜂。
總的來說箩兽,Promise通過then方法來指定處理異步操作結果的方法。

未完待續(xù)紊册。比肄。。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末囊陡,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子掀亥,更是在濱河造成了極大的恐慌撞反,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,729評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件搪花,死亡現場離奇詭異遏片,居然都是意外死亡,警方通過查閱死者的電腦和手機撮竿,發(fā)現死者居然都...
    沈念sama閱讀 95,226評論 3 399
  • 文/潘曉璐 我一進店門吮便,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人幢踏,你說我怎么就攤上這事髓需。” “怎么了房蝉?”我有些...
    開封第一講書人閱讀 169,461評論 0 362
  • 文/不壞的土叔 我叫張陵僚匆,是天一觀的道長微渠。 經常有香客問我,道長咧擂,這世上最難降的妖魔是什么逞盆? 我笑而不...
    開封第一講書人閱讀 60,135評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮松申,結果婚禮上云芦,老公的妹妹穿的比我還像新娘。我一直安慰自己贸桶,他們只是感情好焕数,可當我...
    茶點故事閱讀 69,130評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著刨啸,像睡著了一般堡赔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上设联,一...
    開封第一講書人閱讀 52,736評論 1 312
  • 那天善已,我揣著相機與錄音,去河邊找鬼离例。 笑死换团,一個胖子當著我的面吹牛,可吹牛的內容都是我干的宫蛆。 我是一名探鬼主播艘包,決...
    沈念sama閱讀 41,179評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼耀盗!你這毒婦竟也來了想虎?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 40,124評論 0 277
  • 序言:老撾萬榮一對情侶失蹤叛拷,失蹤者是張志新(化名)和其女友劉穎舌厨,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體忿薇,經...
    沈念sama閱讀 46,657評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡裙椭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,723評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了署浩。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片揉燃。...
    茶點故事閱讀 40,872評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖筋栋,靈堂內的尸體忽然破棺而出炊汤,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 36,533評論 5 351
  • 正文 年R本政府宣布婿崭,位于F島的核電站拨拓,受9級特大地震影響,放射性物質發(fā)生泄漏氓栈。R本人自食惡果不足惜渣磷,卻給世界環(huán)境...
    茶點故事閱讀 42,213評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望授瘦。 院中可真熱鬧醋界,春花似錦、人聲如沸提完。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽徒欣。三九已至逐样,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間打肝,已是汗流浹背脂新。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留粗梭,地道東北人争便。 一個月前我還...
    沈念sama閱讀 49,304評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像断医,于是被迫代替她去往敵國和親滞乙。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,876評論 2 361

推薦閱讀更多精彩內容