欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript中promise.all和promise.race的區(qū)別詳解

 更新時(shí)間:2024年09月24日 09:37:46   作者:肖肖肖麗珠  
Promise.all和Promise.race是JavaScript的兩種Promise處理方法,Promise.all要求所有Promise對(duì)象成功完成才返回成功,若有一個(gè)失敗則整體失敗,Promise.race返回第一個(gè)完成的Promise結(jié)果,需要的朋友可以參考下

前言

Promise.all和Promise.race是JavaScript中Promise API的兩個(gè)重要方法,它們?cè)谔幚矶鄠€(gè)Promise對(duì)象時(shí)表現(xiàn)出不同的行為。以下是它們之間的主要區(qū)別:

1. 功能和行為

Promise.all:

功能:接收一個(gè)包含多個(gè)Promise的數(shù)組(或類數(shù)組對(duì)象)作為參數(shù),并返回一個(gè)新的Promise。

行為:只有當(dāng)數(shù)組中的所有Promise對(duì)象都成功完成時(shí)(即狀態(tài)都變?yōu)閒ulfilled),返回的Promise對(duì)象才會(huì)成功完成,并將所有Promise的結(jié)果作為一個(gè)數(shù)組返回。如果數(shù)組中的任何一個(gè)Promise對(duì)象失?。礌顟B(tài)變?yōu)閞ejected),則返回的Promise對(duì)象會(huì)立即失敗,并將第一個(gè)失敗的Promise的原因作為失敗原因返回。

使用場(chǎng)景:適用于需要等待所有異步操作都成功完成后再進(jìn)行下一步操作的場(chǎng)景,如同時(shí)加載多個(gè)資源并在所有資源都加載完成后顯示頁面。

Promise.race:

功能:同樣接收一個(gè)包含多個(gè)Promise的數(shù)組(或類數(shù)組對(duì)象)作為參數(shù),并返回一個(gè)新的Promise。

行為:這個(gè)返回的Promise會(huì)在數(shù)組中的任意一個(gè)Promise狀態(tài)變?yōu)閒ulfilled或rejected時(shí)被解決或拒絕,且以第一個(gè)被解決的Promise的結(jié)果(或原因)作為其結(jié)果返回。如果數(shù)組中的所有Promise都被拒絕,則返回的Promise將會(huì)以最先被拒絕的Promise的原因作為其原因拒絕。

使用場(chǎng)景:適用于設(shè)置超時(shí)機(jī)制或只關(guān)心第一個(gè)完成的異步操作的場(chǎng)景,如發(fā)起一個(gè)請(qǐng)求并設(shè)置一個(gè)超時(shí)時(shí)間,如果請(qǐng)求在超時(shí)時(shí)間內(nèi)完成,則返回請(qǐng)求結(jié)果;如果超時(shí),則返回超時(shí)錯(cuò)誤。

2. 返回值和狀態(tài)

Promise.all:返回一個(gè)新的Promise,其狀態(tài)取決于所有傳入的Promise對(duì)象的狀態(tài)。如果所有Promise都成功完成,則新Promise也成功完成,并返回所有結(jié)果的數(shù)組;如果有任何一個(gè)Promise失敗,則新Promise也失敗,并返回第一個(gè)失敗的原因。

Promise.race:同樣返回一個(gè)新的Promise,但其狀態(tài)僅由第一個(gè)解決的Promise決定。無論第一個(gè)解決的Promise是成功還是失敗,新Promise的狀態(tài)都會(huì)與其保持一致,并返回相應(yīng)的結(jié)果或原因。

3. 示例

Promise.all示例:

const promise1 = Promise.resolve(3);  
const promise2 = new Promise((resolve, reject) => setTimeout(resolve, 100, 'foo'));  
const promise3 = new Promise((resolve, reject) => setTimeout(resolve, 50, 'bar'));  
 
Promise.all([promise1, promise2, promise3]).then((values) => {  
  console.log(values); // [3, 'foo', 'bar']  

});

Promise.race示例:

javascript

const promise1 = new Promise((resolve, reject) => setTimeout(resolve, 500, 'one'));  
const promise2 = new Promise((resolve, reject) => setTimeout(resolve, 100, 'two'));  
 
Promise.race([promise1, promise2]).then((value) => {  
  console.log(value); // "two"  

    });

總結(jié)

Promise.all和Promise.race在處理多個(gè)Promise對(duì)象時(shí)提供了不同的機(jī)制。Promise.all適用于需要等待所有異步操作都成功完成的場(chǎng)景,而Promise.race則適用于只關(guān)心第一個(gè)完成的異步操作的場(chǎng)景。了解它們之間的區(qū)別對(duì)于在JavaScript中編寫高效、可靠的異步代碼至關(guān)重要。

相關(guān)文章

  • layui table checked獲取選中數(shù)據(jù)方式

    layui table checked獲取選中數(shù)據(jù)方式

    這篇文章主要介紹了layui table checked獲取選中數(shù)據(jù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • 學(xué)習(xí)RxJS之JavaScript框架Cycle.js

    學(xué)習(xí)RxJS之JavaScript框架Cycle.js

    這篇文章主要介紹了學(xué)習(xí)RxJS之JavaScript框架Cycle.js ,它是一個(gè)極簡(jiǎn)的JavaScript框架(核心部分加上注釋125行),提供了一種函數(shù)式,響應(yīng)式的人機(jī)交互接口,需要的朋友可以參考下
    2019-06-06
  • three.js中多線程的使用及性能測(cè)試詳解

    three.js中多線程的使用及性能測(cè)試詳解

    這篇文章主要給大家介紹了關(guān)于three.js中多線程的使用及性能測(cè)試的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 原生JS獲取URL鏈接參數(shù)的幾種常見方法

    原生JS獲取URL鏈接參數(shù)的幾種常見方法

    這篇文章主要給大家介紹了關(guān)于利用原生JS獲取URL鏈接參數(shù)的幾種常見方法,文中通過實(shí)例代碼以及圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-03-03
  • Js event事件在IE、FF兼容性問題

    Js event事件在IE、FF兼容性問題

    FF沒有window.event對(duì)象??梢酝ㄟ^給函數(shù)的參數(shù)傳遞event對(duì)象。
    2011-01-01
  • Javascript獲取當(dāng)前時(shí)間函數(shù)和時(shí)間操作小結(jié)

    Javascript獲取當(dāng)前時(shí)間函數(shù)和時(shí)間操作小結(jié)

    這篇文章主要介紹了Javascript獲取當(dāng)前時(shí)間函數(shù)和時(shí)間操作小結(jié),本文根據(jù)項(xiàng)目實(shí)際需求總結(jié)而來,需要的朋友可以參考下
    2014-10-10
  • javascript里使用php代碼實(shí)例

    javascript里使用php代碼實(shí)例

    這篇文章主要介紹了javascript里使用php代碼的方法,以實(shí)例形式展示了javascript與php代碼混編的應(yīng)用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-12-12
  • JS復(fù)制內(nèi)容到剪切板的實(shí)例代碼(兼容IE與火狐)

    JS復(fù)制內(nèi)容到剪切板的實(shí)例代碼(兼容IE與火狐)

    這篇文章主要介紹了JS復(fù)制內(nèi)容到剪切板的實(shí)例代碼(兼容IE與火狐)。需要的朋友可以過來參考下,希望對(duì)大家有所幫助
    2013-11-11
  • 小程序統(tǒng)計(jì)來源信息的方案與具體代碼

    小程序統(tǒng)計(jì)來源信息的方案與具體代碼

    微信小程序數(shù)據(jù)統(tǒng)計(jì),現(xiàn)在有很多的統(tǒng)計(jì)方法和統(tǒng)計(jì)工具,下面這篇文章主要給大家介紹了關(guān)于小程序統(tǒng)計(jì)來源信息的方案與具體代碼,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • js實(shí)現(xiàn)純前端壓縮圖片

    js實(shí)現(xiàn)純前端壓縮圖片

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)純前端壓縮圖片,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11

最新評(píng)論