当前位置:网站首页>【Promise.allSettled】手写Promise.allSettled方法
【Promise.allSettled】手写Promise.allSettled方法
2022-08-08 17:47:00 【我是枫枫枫逸】
Promise.allSettled是Promise对象的一个静态方法
参数是一个可迭代对象,一般是一个Promise数组
该Promise.allSettled()方法返回一个Promise对象,当所有给定的 promise对象都已经fulfilled或rejected后,返回的Promise对象能拿到一个对象数组,每个对象表示对应的 promise 结果数据以及状态。
当您有多个彼此不依赖的异步任务成功完成时,或者您总是想知道每个promise的结果时,通常使用它。
const pro = new Promise((resolve, reject) => {
setTimeout(() => {
reject(3);
}, 1000);
});
Promise.allSettled([pro, Promise.resolve(1), Promise.reject(2)]).then(
(data) => {
console.log(data);
}
);
打印结果
[
{ status: 'rejected', reason: 3 },
{ status: 'fulfilled', value: 1 },
{ status: 'rejected', reason: 2 }
]
手写Promise.allSettled代码
Promise.myAllSettled = function (proms) {
return new Promise((resolve, reject) => {
let resolvedCount = 0;
let count = 0;
const results = [];
for (const prom of proms) {
let i = count;
count++;
Promise.resolve(prom)
.then(
(data) => {
resolvedCount++;
results[i] = {
status: "fullfilled",
value: data,
};
},
(reason) => {
resolvedCount++;
results[i] = {
status: "rejected",
reason,
};
}
)
.finally(() => {
if (resolvedCount >= count) {
resolve(results);
}
});
}
});
};
const pro = new Promise((resolve, reject) => {
setTimeout(() => {
reject(3);
}, 1000);
});
Promise.allSettled([pro, Promise.resolve(1), Promise.reject(2)]).then(
(data) => {
console.log(data);
}
);
Promise.myAllSettled([pro, Promise.resolve(1), Promise.reject(2)]).then(
(data) => {
console.log(data);
}
);

边栏推荐
猜你喜欢
随机推荐
C语言每日一练——Day01:求最大公约数(三种方法)
CS231n:11 生成模型
arm交叉编译
请教一个oracle - cdc问题。 设置为 StartupOptions.latest()
Codeforces Round #699 (Div. 2)
使用电脑通过VNC Viewer远程连接树莓派4B
在启牛学堂股票开户安全吗?
DSPE-PEG-Biotin,385437-57-0,磷脂-聚乙二醇-生物素用于生物分子的检测和纯化
【目标检测】YOLOv5:标签中文显示/自定义颜色
Detailed explanation of JVM memory model and structure (five model diagrams)
@Transactional
CF1165F2(二分答案)
医疗机构漏诊,该不该赔?--一起交通事故多处骨折,又遇到医疗机构漏诊
openGauss社区七月运作报告
转载,fragment讲的很好的大佬
CS231n:12 强化学习
数据库分析与优化
How big is 1dp!
The new version of squirrel as source change operation
Cholesterol-PEG-DBCO,CLS-PEG-DBCO,胆固醇-聚乙二醇-二苯基环辛炔一种环炔烃









