網站首頁 編程語言 正文
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
相關推薦
- 2022-08-01 使用docker環境變量動態配置nginx的問題小結_docker
- 2022-05-11 生產事故記錄(tomcat線程池與數據庫連接池)與(堆棧信息)Jprofile的使用
- 2024-07-14 關于Module中在junit測試方法和非測試方法中獲取相對路徑不一致的問題
- 2022-05-12 Kotlin 擴展函數 之 可空
- 2022-09-15 C#?讀寫自定義的Config文件的實現方法_C#教程
- 2023-07-07 maven項目如何引入項目本地jar包
- 2022-04-25 C#使用NPOI讀取excel轉為DataSet_C#教程
- 2022-09-06 C#任務并行Parellel.For和Parallel.ForEach_C#教程
- 最近更新
-
- 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同步修改后的遠程分支