ES11的Promise.allSettled
时间:2021-08-14
本文章向大家介绍ES11的Promise.allSettled,主要包括ES11的Promise.allSettled使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
小编最近因为一些自己的问题,没有更新文章。今天刚好有一点精神头,特意来更新一下,今天和大家一起探讨的是Promise对象中的allSettled方法,主要是为了解决多次异步请求的时候,中途出现失败的痛点处理。
在之前的文章中,小编更新的Promise.all方法,这个主要是为了优化多次请求的情况,可以写成这样。
Promise.all([ Promise.resolve({ code:200, data:[1,2,3] }), Promise.resolve({ code:200, data:[4,5,6] }), Promise.resolve({ code:200, data:[7,8,9] }), ]).then(res => { console.log(res) console.log("成功") }).catch(err => { console.log(err) console.log("失败") }) // [{code:200,data:[1,2,3]},{code:200,data:[4,5,6]},{code:200,data:[7,8,9]}] 成功
用这个方法的时候,每个参数都是Promise对象,如果每一次请求都成功的时候,痛点并没有显现那么明显,当中间有一次请求失败或者异常的时候,就会这样
Promise.all([ Promise.resolve({ code:200, data:[1,2,3] }), Promise.reject({ code:500, data:[] }), Promise.resolve({ code:200, data:[7,8,9] }), ]).then(res => { console.log(res) console.log("成功") }).catch(err => { console.log(err) console.log("失败") }) // {code: 500, data: Array(0)} 失败
这样就完全掩盖了请求成功的回调,所以在es11中引入了Promise.allSettled方法,使用方法如下
Promise.allSettled([ Promise.resolve({ code:200, data:[1,2,3] }), Promise.reject({ code:500, data:[] }), Promise.resolve({ code:200, data:[7,8,9] }), ]).then(res => { console.log(res) console.log("成功") }).catch(err => { console.log(err) console.log("失败") }) // [{status:"fulfilled",value:{code:200,data:[1,2,3]}},{status:"rejected",value:{code:500,data:[]}},{status:"fulfilled",value:{code:200,data:[7,8,9]}}]
最后可以通过数据的status和value,应用filter或者map高阶函数进一步筛选数据。又是增加技能的一天,大家一起加油!
原文地址:https://www.cnblogs.com/feiying3995/p/15140656.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法