es6 javascript對象Promise

Promise的構(gòu)造函數(shù)接收一個參數(shù)电爹,是函數(shù)蔫仙,并且傳入兩個參數(shù):resolve,reject丐箩,分別表示異步操作執(zhí)行成功后的回調(diào)函數(shù)和異步操作執(zhí)行失敗后的回調(diào)函數(shù)摇邦。

1.模擬同步加載,比如兩個ajax請求屎勘,需求是ajax1執(zhí)行完拿到數(shù)據(jù)后才能執(zhí)行ajax2施籍,這里我就用setTimeout來表示ajax。

一般的處理方式是

var ajax1=setTimeout(()=>{

? ? console.log(?"ajax1回調(diào)了,發(fā)起ajax2請求 ");

? ??var ajax2=setTimeout(()=>{?

? ? ? ? ? ? console.log( "ajax2回調(diào)了概漱,發(fā)起ajax3請求" );

? ???????????var ajax3=setTimeout(()=>{

?????????? ? ? ? ? ??????console.log( "ajax3的回調(diào)執(zhí)行了" );

? ? ? ? ? ? ? ?},1000)

??????},1000)

},1000)

用promise實現(xiàn)

new Promise(( resolve,reject )=>{

????????setTimeout(()=>{

????????????????console.log( "ajax1回調(diào)了,開始調(diào)用ajax2的請求函數(shù) ");

? ? ? ? ? ? ? ? ?resolve("哈哈哈哈我是ajax1請求回來的數(shù)據(jù)");

????????})

})

.then((res)=>{

????return new Promise(( resolve,reject )=>{

????????????console.log("ajax1傳過來的參數(shù)="+res);

????????????setTimeout(()=>{

????????????????????console.log( "ajax2回調(diào)了,開始調(diào)用ajax3的請求函數(shù) ");

? ? ? ? ? ? ? ? ? ? ?resolve("哈哈哈哈我是ajax2請求回來的數(shù)據(jù)");

????????????})

????})

})

.then((res)=>{

????????return new Promise(( resolve,reject )=>{

????????????console.log("ajax2傳過來的參數(shù)="+res);

? ? ? ? ? ? ?setTimeout(()=>{

????????????????????console.log( "ajax3回調(diào)了");

????????????????????reject("ajax3回調(diào)拿到的參數(shù)為null丑慎,我要報異常");

????????????????})

????})??

})

.catch((err)=>{

????console.log(err);

});

代碼多的話兩種方式的可讀性就很明顯了。

2.并行加載瓤摧,可以讓幾個函數(shù)“并行”異步加載竿裂,一起回調(diào)。

Promise.all 接收一個 promise對象的數(shù)組作為參數(shù)照弥,當這個數(shù)組里的所有promise對象全部變?yōu)閞esolve或reject狀態(tài)的時候腻异,它才會去調(diào)用 .then 方法。

var fun1=(res)=>{

????return new Promise((resolve,reject)=>{

????????????setTimeout(()=>{

????????????????//這個請求用了1秒

????????????????resolve(res);

????????????},1000)

????});

}

var fun2=(res)=>{

????????return new Promise((resolve,reject)=>{

????????????????setTimeout(()=>{

????????????????????//這個請求用了3秒

????????????????????resolve(res);

????????????????},3000)

????????});

}

var obj={ name:"promise"};

var obj1={ name:"all"}

Promise.all([fun1(obj),fun2(obj1)]).then((res)=>{

????//3秒后

????console.log(res);

????//[{"name":"promise"},{"name":"all"}]

????//返回的是包含所有函數(shù)返回值的數(shù)組

}).catch((err)=>{

????console.log(err);

})

Promise.all和Promise.race使用方式完全一樣产喉,區(qū)別在于all是數(shù)組中所有函數(shù)都執(zhí)行了resolve方法才回調(diào)捂掰,race則是第一個執(zhí)行了resolve方法就回調(diào),這個就不上代碼了曾沈,只是回調(diào)有區(qū)別这嚣。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市塞俱,隨后出現(xiàn)的幾起案子姐帚,更是在濱河造成了極大的恐慌,老刑警劉巖障涯,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件罐旗,死亡現(xiàn)場離奇詭異,居然都是意外死亡唯蝶,警方通過查閱死者的電腦和手機九秀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來粘我,“玉大人鼓蜒,你說我怎么就攤上這事痹换。” “怎么了都弹?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵娇豫,是天一觀的道長。 經(jīng)常有香客問我畅厢,道長冯痢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任框杜,我火速辦了婚禮浦楣,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘霸琴。我一直安慰自己椒振,他們只是感情好,可當我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布梧乘。 她就那樣靜靜地躺著,像睡著了一般庐杨。 火紅的嫁衣襯著肌膚如雪选调。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天灵份,我揣著相機與錄音仁堪,去河邊找鬼。 笑死填渠,一個胖子當著我的面吹牛弦聂,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播氛什,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼莺葫,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了枪眉?” 一聲冷哼從身側(cè)響起捺檬,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎贸铜,沒想到半個月后堡纬,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡蒿秦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年烤镐,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片棍鳖。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡炮叶,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情悴灵,我是刑警寧澤鸽嫂,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布让蕾,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏幼衰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一隘蝎、第九天 我趴在偏房一處隱蔽的房頂上張望库车。 院中可真熱鬧,春花似錦缰贝、人聲如沸馍悟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽锣咒。三九已至,卻和暖如春赞弥,著一層夾襖步出監(jiān)牢的瞬間毅整,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工绽左, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留悼嫉,地道東北人。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓拼窥,卻偏偏與公主長得像戏蔑,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子鲁纠,可洞房花燭夜當晚...
    茶點故事閱讀 45,512評論 2 359

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

  • Promise 對象 Promise 的含義 Promise 是異步編程的一種解決方案总棵,比傳統(tǒng)的解決方案——回調(diào)函...
    neromous閱讀 8,710評論 1 56
  • 特點 Promise能將回調(diào)分離出來,在異步操作執(zhí)行之后,用鏈式方法執(zhí)行回調(diào),雖然es5用封裝函數(shù)也能實現(xiàn),但是如...
    一二三kkxx閱讀 623評論 0 1
  • 在ES6當中添加了很多新的API其中很值得一提的當然少不了Promise,因為Promise的出現(xiàn)房交,很輕松的就給開...
    嘿_那個誰閱讀 3,671評論 2 3
  • //本文內(nèi)容起初摘抄于 阮一峰 作者的譯文彻舰,用于記錄和學(xué)習(xí),建議觀者移步于原文 概念: 所謂的Promise候味,...
    曾經(jīng)過往閱讀 1,240評論 0 7
  • # Ajax標簽(空格分隔): 筆記整理---[TOC]### 從輸入網(wǎng)址開始:- 在學(xué)習(xí)ajax之前刃唤,你應(yīng)該先了...
    V8閱讀 263評論 1 0