当前位置:网站首页>【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);
}
);
边栏推荐
猜你喜欢
随机推荐
Vscode LeetCode 教程
CS231n:11 生成模型
c语言指针运算
数据库分析与优化
IP分配——DHCP(讲解+配置)
rv和sv的区别
【目标检测】小脚本:根据xml批量复制jpg图片
如何让您的wiki内容更高级?
socket concept
C语言中变量在内存中的保存与访问
差分信号简述
The difference between rv and sv
Open source summer | I have nothing to do during the epidemic, I made a button display box special effect to display my blog
测试/开发程序员停滞不前,倦怠怎么办?突破各种失败和挫折......
Getting started with glide4
CF533B(树形dp+转移技巧)
2 prerequisites for the success of "digital transformation" of enterprises!
博客主页rrs代码
yarn : 无法加载文件 D:xxx\node_global\yarn.ps1 因为在此系统上禁止运行脚本
开源一夏 | RuntimeException 子类