網站首頁 編程語言 正文
all方法
// all: 傳入的所有Promise最終都轉化為fulfilled態時,則會執行resolve回調,并將返回值是的所有的Promise的resolve的回調的value的數組。
// 其中一個任何Promise為reject狀態時,則返回的Promise的狀態更改為rejected。
function all(arr) {
//返回一個promise
return new Promise((resolve, reject) => {
let length = arr.length //傳入的promise的個數
let count = 0 //進入fullfilled的promise個數
const result = [] //創建一個等長的數組,放置結果
// 當傳遞是一個空數組,返回一個為fulfilled狀態的promise
if (arr.length === 0) {
return new Promise.resolve(arr)
}
for (let i = 0; i < arr.length; i++) {
arr[i].then(resolve => {
result.push(resolve) //將每次結果保存在result數組中
count++ //個數加1
//是否所有的promise都進入fullfilled狀態
if (count === length) {
resolve(result) //返回結果
}
}).catch(e => {
reject(e) //如果有錯誤則直接結束循環,并返回錯誤
})
}
})
}
race方法
//race: 傳入的所有Promise其中任何一個有狀態轉化為fulfilled或者rejected,則將執行對應的回調。
function race(arr) {
return new Promise((res, rej) => {
for (let i = 0; i < arr.length; i++) {
arr[i].then(resolve => {
res(resolve) //某一promise完成后直接返回其值
}).catch(e => {
rej(e) //如果有錯誤則直接結束循環,并返回錯誤
})
}
})
}
any方法
// 只需要有一個成功的即可
function any(arr){
return new Promise((resolve,reject) => {
let result = []
let len = arr.length
let rejectCount = 0
for(let i = 0;i<len;i++){
arr[i].then(res => {
resolve(res)
}).catch(e => {
result.push(e)
if(rejectCount === len){
reject(result)
}
})
}
})
}
原文鏈接:https://blog.csdn.net/liu19721018/article/details/121515254
相關推薦
- 2023-01-01 Echarts改變柱狀圖顏色
- 2022-05-08 SQL利用游標遍歷日期查詢的過程詳解_MsSql
- 2023-06-19 Golang遞歸獲取目錄下所有文件方法實例_Golang
- 2022-08-21 golang類型推斷與隱式類型轉換_Golang
- 2022-10-05 帶你深度走入C語言取整以及4種函數_C 語言
- 2022-07-27 golang中按照結構體的某個字段排序實例代碼_Golang
- 2022-12-30 解決React報錯The?tag?is?unrecognized?in?this?browser_R
- 2022-09-03 Python實現求解最大公約數的五種方法總結_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支