理解和使用Promise.all和Promise.race

一片酝、Pomise.all的使用
Promise.all可以將多個(gè)Promise實(shí)例包裝成一個(gè)新的Promise實(shí)例京闰。同時(shí)聪舒,成功和失敗的返回值是不同的,成功的時(shí)候返回的是一個(gè)結(jié)果數(shù)組靠瞎,而失敗的時(shí)候則返回最先被reject失敗狀態(tài)的值。

具體代碼如下:

let p1 = new Promise((resolve, reject) => {
  resolve('成功了')
})

let p2 = new Promise((resolve, reject) => {
  resolve('success')
})

let p3 = Promsie.reject('失敗')

Promise.all([p1, p2]).then((result) => {
  console.log(result)               //['成功了', 'success']
}).catch((error) => {
  console.log(error)
})

Promise.all([p1,p3,p2]).then((result) => {
  console.log(result)
}).catch((error) => {
  console.log(error)      // 失敗了,打出 '失敗'
})

Promse.all在處理多個(gè)異步處理時(shí)非常有用乏盐,比如說(shuō)一個(gè)頁(yè)面上需要等兩個(gè)或多個(gè)ajax的數(shù)據(jù)回來(lái)以后才正常顯示佳窑,在此之前只顯示loading圖標(biāo)。

代碼模擬:

let wake = (time) => {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve(`${time / 1000}秒后醒來(lái)`)
    }, time)
  })
}

let p1 = wake(3000)
let p2 = wake(2000)

Promise.all([p1, p2]).then((result) => {
  console.log(result)       // [ '3秒后醒來(lái)', '2秒后醒來(lái)' ]
}).catch((error) => {
  console.log(error)
})

需要特別注意的是父能,Promise.all獲得的成功結(jié)果的數(shù)組里面的數(shù)據(jù)順序和Promise.all接收到的數(shù)組順序是一致的神凑,即p1的結(jié)果在前,即便p1的結(jié)果獲取的比p2要晚法竞。這帶來(lái)了一個(gè)絕大的好處:在前端開發(fā)請(qǐng)求數(shù)據(jù)的過(guò)程中耙厚,偶爾會(huì)遇到發(fā)送多個(gè)請(qǐng)求并根據(jù)請(qǐng)求順序獲取和使用數(shù)據(jù)的場(chǎng)景,使用Promise.all毫無(wú)疑問(wèn)可以解決這個(gè)問(wèn)題岔霸。

二薛躬、Promise.race的使用
顧名思義,Promse.race就是賽跑的意思呆细,意思就是說(shuō)型宝,Promise.race([p1, p2, p3])里面哪個(gè)結(jié)果獲得的快,就返回那個(gè)結(jié)果絮爷,不管結(jié)果本身是成功狀態(tài)還是失敗狀態(tài)趴酣。

let p1 = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve('success')
  },1000)
})

let p2 = new Promise((resolve, reject) => {
  setTimeout(() => {
    reject('failed')
  }, 500)
})

Promise.race([p1, p2]).then((result) => {
  console.log(result)
}).catch((error) => {
  console.log(error)  // 打開的是 'failed'
})

原理是挺簡(jiǎn)單的,但是在實(shí)際運(yùn)用中還沒(méi)有想到什么的使用場(chǎng)景會(huì)使用到坑夯。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末岖寞,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子柜蜈,更是在濱河造成了極大的恐慌仗谆,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件淑履,死亡現(xiàn)場(chǎng)離奇詭異隶垮,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)秘噪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門狸吞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人指煎,你說(shuō)我怎么就攤上這事蹋偏。” “怎么了至壤?”我有些...
    開封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵暖侨,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我崇渗,道長(zhǎng)字逗,這世上最難降的妖魔是什么京郑? 我笑而不...
    開封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮葫掉,結(jié)果婚禮上些举,老公的妹妹穿的比我還像新娘。我一直安慰自己俭厚,他們只是感情好户魏,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著挪挤,像睡著了一般叼丑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上扛门,一...
    開封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天鸠信,我揣著相機(jī)與錄音,去河邊找鬼论寨。 笑死星立,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的葬凳。 我是一名探鬼主播绰垂,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼火焰!你這毒婦竟也來(lái)了劲装?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤昌简,失蹤者是張志新(化名)和其女友劉穎酱畅,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體江场,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年窖逗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了址否。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡碎紊,死狀恐怖佑附,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情仗考,我是刑警寧澤音同,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站秃嗜,受9級(jí)特大地震影響权均,放射性物質(zhì)發(fā)生泄漏顿膨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一叽赊、第九天 我趴在偏房一處隱蔽的房頂上張望恋沃。 院中可真熱鬧,春花似錦必指、人聲如沸囊咏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)梅割。三九已至,卻和暖如春葛家,著一層夾襖步出監(jiān)牢的瞬間户辞,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工惦银, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留咆课,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓扯俱,卻偏偏與公主長(zhǎng)得像书蚪,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子迅栅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

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