[TOC]
>[success] # Promise.allSettled
**Promise.allSettled** 方法与 **Promise.all** 不同点:
1. **Promise.all** : 有一个请求错误,直接走 **.catch** ,不再走 **.then** 。
2. **Promise.allSettled** : **无论请求对错最终都会返回一个数组对象** 到 **.then** 中,并切**返回的数据中标识了错误跟正确数据的区别** 。
以上就是 **Promise.allSettled** 方法与 **Promise.all** 的区别,但是 **Promise.allSettled** 是新出方法 **部分浏览器不支持** ,如下 **Promise.allSettled** 是第四阶段的草案 ,所以想使用这个方法,可以使用 **babel垫片** 或者自己 **手动封装一个** , 我们要实现的就是后者。
![](https://img.kancloud.cn/ac/c7/acc7d1a215dde6b51f97dad1bb6a2714_1141x208.png)
>[success] ## 封装 allSettled 方法
**allSettled 方法代码如下**
~~~
let allSettled = (funcArr) => {
return new Promise((resolve) => {
let sttled = 0
let result = []
for(let index = 0;index<funcArr.length;index++){
const element = funcArr[index]
element
.then(res => {
result[index] = {
status: 'fulfilled',
value: res
}
})
.catch(err => {
result[index] = {
status: 'rejected',
reason: err
}
})
.finally(() => { ++sttled === funcArr.length && resolve(result) })
}
})
}
~~~
使用时
~~~
const promises = [
Promise.reject('c'),
Promise.resolve('a'),
Promise.resolve('b'),
];
allSettled(promises).then(res => {
console.log(res)
})
// 打印结果
// [{"status":"rejected","reason":"c"},
// {"status":"fulfilled","value":"a"},
// {"status":"fulfilled","value":"b"}]
~~~
- vue复选框逻辑
- get请求给后台传数组
- 提交表单时传值参数处理方案
- Element ui上传图片功能
- async和await的使用
- 时间戳转换
- 日期格式转换时间戳
- 时间戳转换日期格式
- 对深拷贝的认知总结
- vue-右键菜单功能
- textarea中换行、回车、空格的识别与处理
- element ui表格合并
- 合并行(上下行)
- 双层for循环
- 数组去重
- 瀑布流
- 前端多条件筛选
- 闭包的理解
- 改变this指向
- vue单选框逻辑
- 对象数组根据某个属性来进行排序
- vscode插件整理
- 对象数组多条件去重
- Blob类型数据转换Json数据类型
- Element ui做批量上传功能
- 前端cookie和后端cookie
- 强制转换https协议
- 给事件传额外参数
- 树形结构数据处理
- 查找所有父级数据
- 根据id筛选单条数据
- 动态引入阿里图标库
- 四舍五入
- 封装一个Promise.allSettled方法
- 判断输入框内是否有emoji表情
- element-ui的popover组件位置偏移
- formData上传文件时,携带【数组对象参数】
- 前端解压压缩包(zip)解压后上传解压的文件
- element ui表格列相同解决办法
- elementUI,table复选框多选,翻页/切换条数时保持选中状态
- cookie 和 token 的区别