JavaScript Promise 對象

一贬媒、什么是Promise

????????ECMAscript 6 提供了 Promise 對象矗蕊。Promise 是異步編程的一個解決方案,不同于回調(diào)患雏,里面保存著某個未來才會結(jié)束的事件(通常是一個異步操作(定時器茅茂,ajax捏萍,圖片加載))的結(jié)果。所謂Promise空闲,就是一個容器照弥,裝的就是異步的操作(未來才會產(chǎn)生的事情)。Promise 是一個對象进副,從它可以獲取異步操作的消息这揣。

二、Promise的特點

? ? ? ? 1.對象的狀態(tài)不受外界影響影斑。Promise對象代表一個異步操作给赞,有三種狀態(tài):pending(進(jìn)行中)、fulfilled(已成功)和rejected(已失斀没А)片迅。任何其他操作都無法改變這個狀態(tài)。(某些時候用resolved(已完成)來代替fulfiller(已成功)的狀態(tài))

? ? ? ? 2.一旦狀態(tài)改變皆辽,就不會再變柑蛇。Promise對象的狀態(tài)改變只有兩種可能:從pending-->resolved和從pending-->rejected。

三驱闷、基本寫法

? ? ? ? 下面用一個小例子向大家展示promise的基本寫法:

promise基本寫法
打印結(jié)果

可以看到打印出來的是成功耻台。當(dāng)const a=false時,打印結(jié)果為失敗空另。

????????Promise構(gòu)造函數(shù)兩個參數(shù)分別是resolve和reject盆耽。resolve是異步操作成功時需要執(zhí)行的 reject是異步操作失敗時需要執(zhí)行的。

四扼菠、用Promise對象實現(xiàn)的 Ajax 操作

?? ? ? ? 下面寫一個簡單的例子:

簡單寫3個txt文件摄杂,作為ajax訪問的路徑


這是三個Promise對象,里面裝的是ajax操作(用的是jquery的)


執(zhí)行then操作循榆。分別用來all和race


打印結(jié)果

可以看出析恢。all是所有異步操作全部執(zhí)行完畢,才執(zhí)行的then秧饮。而race則是只接收最快的異步數(shù)據(jù)映挂。

五泽篮、promise中的then

? ? ? ? Promise實例生成以后就具有then方法了,因為then方法是定義在原型對象Promise.prototype上的袖肥。promise.then() 是 promise 最為常用的方法咪辱,可以用then方法分別指定resolved狀態(tài)和rejected狀態(tài)的回調(diào)函數(shù)振劳。其中rejected狀態(tài)的回調(diào)函數(shù)是可選的椎组。?解決ajax1的返回的數(shù)據(jù)在ajax2里面使用,每個ajax放到一個Promise對象里面历恐。p1.then放到p2的Promise對象里面執(zhí)行寸癌。then 可以一直往下走,可以有多個弱贼。而catch是錯誤執(zhí)行的代碼蒸苇,只能有一個,并且放在所有then之后執(zhí)行吮旅。

六溪烤、Promise 優(yōu)缺點

? ? ? 有了 Promise 對象,就可以將異步操作以同步操作的流程表達(dá)出來庇勃,避免了層層嵌套的回調(diào)函數(shù)檬嘀。此外,Promise 對象提供統(tǒng)一的接口责嚷,使得控制異步操作更加容易鸳兽。

? ? ? Promise 也有一些缺點。首先罕拂,無法取消 Promise揍异,一旦新建它就會立即執(zhí)行,中途不能取消爆班。其次衷掷,如果不設(shè)置回調(diào)函數(shù),Promise 內(nèi)部拋出的錯誤柿菩,不會反應(yīng)到外部棍鳖。第三,當(dāng)處于 Pending 狀態(tài)時碗旅,無法得知目前進(jìn)展到哪一個階段(剛剛開始還是即將完成)渡处。



? ? ? ? ? ? 總結(jié)的可能有點亂不是很完整。有好的意見可以交流噢~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末祟辟,一起剝皮案震驚了整個濱河市医瘫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌旧困,老刑警劉巖醇份,帶你破解...
    沈念sama閱讀 221,576評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件稼锅,死亡現(xiàn)場離奇詭異,居然都是意外死亡僚纷,警方通過查閱死者的電腦和手機矩距,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來怖竭,“玉大人锥债,你說我怎么就攤上這事∪簦” “怎么了哮肚?”我有些...
    開封第一講書人閱讀 168,017評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長广匙。 經(jīng)常有香客問我允趟,道長,這世上最難降的妖魔是什么鸦致? 我笑而不...
    開封第一講書人閱讀 59,626評論 1 296
  • 正文 為了忘掉前任潮剪,我火速辦了婚禮,結(jié)果婚禮上分唾,老公的妹妹穿的比我還像新娘抗碰。我一直安慰自己,他們只是感情好鳍寂,可當(dāng)我...
    茶點故事閱讀 68,625評論 6 397
  • 文/花漫 我一把揭開白布改含。 她就那樣靜靜地躺著,像睡著了一般迄汛。 火紅的嫁衣襯著肌膚如雪捍壤。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,255評論 1 308
  • 那天鞍爱,我揣著相機與錄音鹃觉,去河邊找鬼。 笑死睹逃,一個胖子當(dāng)著我的面吹牛盗扇,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播沉填,決...
    沈念sama閱讀 40,825評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼疗隶,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了翼闹?” 一聲冷哼從身側(cè)響起斑鼻,我...
    開封第一講書人閱讀 39,729評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎猎荠,沒想到半個月后坚弱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蜀备,經(jīng)...
    沈念sama閱讀 46,271評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,363評論 3 340
  • 正文 我和宋清朗相戀三年荒叶,在試婚紗的時候發(fā)現(xiàn)自己被綠了矩屁。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片镀赌。...
    茶點故事閱讀 40,498評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡站刑,死狀恐怖浪册,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情戈毒,我是刑警寧澤艰猬,帶...
    沈念sama閱讀 36,183評論 5 350
  • 正文 年R本政府宣布横堡,位于F島的核電站埋市,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏命贴。R本人自食惡果不足惜道宅,卻給世界環(huán)境...
    茶點故事閱讀 41,867評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望胸蛛。 院中可真熱鬧污茵,春花似錦、人聲如沸葬项。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽民珍。三九已至襟士,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間嚷量,已是汗流浹背陋桂。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蝶溶,地道東北人嗜历。 一個月前我還...
    沈念sama閱讀 48,906評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像抖所,于是被迫代替她去往敵國和親梨州。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,507評論 2 359

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

  • Promise 對象 Promise 的含義 Promise 是異步編程的一種解決方案田轧,比傳統(tǒng)的解決方案——回調(diào)函...
    neromous閱讀 8,708評論 1 56
  • Promise的含義: ??Promise是異步編程的一種解決方案暴匠,比傳統(tǒng)的解決方案——回調(diào)函數(shù)和事件——更合理和...
    呼呼哥閱讀 2,172評論 0 16
  • 目錄:Promise 的含義基本用法Promise.prototype.then()Promise.prototy...
    BluesCurry閱讀 1,494評論 0 8
  • Promise對象是一種解決異步問題的方法,還有的解決方案是asyns 和 await (es7) 這么是目前的終...
    站在大神的肩膀上看世界閱讀 1,266評論 0 6
  • Promise含義 Promise是異步編程的一種解決方案涯鲁,比傳統(tǒng)的解決方案——回調(diào)函數(shù)和事件——更強大巷查。所謂Pr...
    oWSQo閱讀 1,086評論 0 4