Promise的神奇

Promise其實(shí)就是一個(gè)對(duì)象 , 用來傳遞異步操作的 . 它代表了某個(gè)未來才會(huì)知道結(jié)果的事件( 這通常是一個(gè)異步操作 ) , 并為這個(gè)事件提供統(tǒng)一的API , 讓其可供進(jìn)一步處理 ;


Promise對(duì)象有以下兩個(gè)特點(diǎn):

(1) 對(duì)象的狀態(tài)不受外界影響 .?Promise對(duì)象代表一個(gè)異步操作 , 有三種狀態(tài):Pending( 進(jìn)行中 )、Resolved( 已完成,又稱 Fulfilled )和 Rejected( 已失敗 ). 只有異步操作的結(jié)果 , 可以決定當(dāng)前是哪一種狀態(tài) , 任何其他操作都無法改變這個(gè)狀態(tài) . 這也是 Promise 這個(gè)名字的由來 , 它的英語(yǔ)意思就是「 承諾 」 , 表示其他手段無法改變 ;

(2)一旦狀態(tài)改變 , 就不會(huì)再變 , 任何時(shí)候都可以得到這個(gè)結(jié)果 . Promise 對(duì)象的狀態(tài)改變 , 只有兩種可能 : 從 Pending 變?yōu)?Resolved 和從 Pending 變?yōu)?Rejected . 只要這兩種情況發(fā)生 , 狀態(tài)就凝固了 , 不會(huì)再變了 , 會(huì)一直保持這個(gè)結(jié)果 . 就算改變已經(jīng)發(fā)生了 , 你再對(duì) Promise 對(duì)象添加回調(diào)函數(shù) , 也會(huì)立即得到這個(gè)結(jié)果 . 這與事件( Event )完全不同 , 事件的特點(diǎn)是 , 如果你錯(cuò)過了它 , 再去監(jiān)聽 , 是得不到結(jié)果的 ;有了 Promise 對(duì)象尸疆,就可以將異步操作以同步操作的流程表達(dá)出來度帮,避免了層層嵌套的回調(diào)函數(shù)科展。此外争涌,Promise 對(duì)象提供統(tǒng)一的接口损俭,使得控制異步操作更加容易痹栖。

Promise 也有一些缺點(diǎn)亿汞。首先,無法取消 Promise揪阿,一旦新建它就會(huì)立即執(zhí)行疗我,無法中途取消。其次南捂,如果不設(shè)置回調(diào)函數(shù)吴裤,Promise 內(nèi)部拋出的錯(cuò)誤,不會(huì)反應(yīng)到外部溺健。第三麦牺,當(dāng)處于 Pending 狀態(tài)時(shí),無法得知目前進(jìn)展到哪一個(gè)階段( 剛剛開始還是即將完成 )。

var promise = new Promise( function( resolve , reject ) {

if ( /* 異步操作成功 */ ) {

resolve( value ) ;

} else {

reject( error );

}

} ) ;

promise.then( function ( value ) {

// success

} , ?function( value ) {

// failure

} ) ;

Promise 構(gòu)造函數(shù)接受一個(gè)函數(shù)作為參數(shù) , 該函數(shù)的兩個(gè)參數(shù)分別是 resolve 方法和 reject 方法 .

如果異步操作成功 , 則用 resolve 方法將 Promise 對(duì)象的狀態(tài) , 從「 未完成 」變?yōu)椤?成功 」( 即從 pending 變?yōu)?resolved );

如果異步操作失敗 , 則用 reject 方法將 Promise 對(duì)象的狀態(tài) , 從「 未完成 」變?yōu)椤?失敗 」( 即從 pending 變?yōu)?rejected );

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末枕面,一起剝皮案震驚了整個(gè)濱河市愿卒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌潮秘,老刑警劉巖琼开,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異枕荞,居然都是意外死亡柜候,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門躏精,熙熙樓的掌柜王于貴愁眉苦臉地迎上來渣刷,“玉大人,你說我怎么就攤上這事矗烛「ú瘢” “怎么了?”我有些...
    開封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵瞭吃,是天一觀的道長(zhǎng)碌嘀。 經(jīng)常有香客問我,道長(zhǎng)歪架,這世上最難降的妖魔是什么股冗? 我笑而不...
    開封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮和蚪,結(jié)果婚禮上止状,老公的妹妹穿的比我還像新娘。我一直安慰自己攒霹,他們只是感情好怯疤,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著催束,像睡著了一般旅薄。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上泣崩,一...
    開封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音洛口,去河邊找鬼矫付。 笑死,一個(gè)胖子當(dāng)著我的面吹牛第焰,可吹牛的內(nèi)容都是我干的买优。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼杀赢!你這毒婦竟也來了烘跺?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤脂崔,失蹤者是張志新(化名)和其女友劉穎滤淳,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體砌左,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡脖咐,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了汇歹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片屁擅。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖产弹,靈堂內(nèi)的尸體忽然破棺而出派歌,到底是詐尸還是另有隱情,我是刑警寧澤痰哨,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布胶果,位于F島的核電站,受9級(jí)特大地震影響作谭,放射性物質(zhì)發(fā)生泄漏稽物。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一折欠、第九天 我趴在偏房一處隱蔽的房頂上張望贝或。 院中可真熱鬧,春花似錦锐秦、人聲如沸咪奖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)羊赵。三九已至,卻和暖如春扇谣,著一層夾襖步出監(jiān)牢的瞬間昧捷,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人简烤。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓飒炎,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親号涯。 傳聞我的和親對(duì)象是個(gè)殘疾皇子晒喷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

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

  • 00租幕、前言Promise 是異步編程的一種解決方案,比傳統(tǒng)的解決方案——回調(diào)函數(shù)和事件——更合理和更強(qiáng)大拧簸。它由社區(qū)...
    夜幕小草閱讀 2,133評(píng)論 0 12
  • Promiese 簡(jiǎn)單說就是一個(gè)容器劲绪,里面保存著某個(gè)未來才會(huì)結(jié)束的事件(通常是一個(gè)異步操作)的結(jié)果,語(yǔ)法上說狡恬,Pr...
    雨飛飛雨閱讀 3,358評(píng)論 0 19
  • Promise的含義: ??Promise是異步編程的一種解決方案珠叔,比傳統(tǒng)的解決方案——回調(diào)函數(shù)和事件——更合理和...
    呼呼哥閱讀 2,170評(píng)論 0 16
  • 本文適用的讀者 本文寫給有一定Promise使用經(jīng)驗(yàn)的人,如果你還沒有使用過Promise弟劲,這篇文章可能不適合你祷安,...
    HZ充電大喵閱讀 7,307評(píng)論 6 19
  • 首先是備受關(guān)注的玉米收儲(chǔ)制度改革庸追。去年霍骄,執(zhí)行八年之久的臨儲(chǔ)收購(gòu)最終于隱退,取而代之的是“市場(chǎng)收購(gòu)+補(bǔ)貼”淡溯,這一年玉...
    賣糧寶閱讀 675評(píng)論 0 0