小编由于自身的一些问题,近期没有更新文章。今天刚好有一点力气,就来更新一下。今天和大家讨论的是Promise对象中的allSettled方法。主要是解决多个异步请求中间失败的痛点。上一篇小编更新了Promise.all方法,主要是优化了多次请求的情况,可以这样写。Promise.all([Promise.resolve({代码:200,数据:[1,2,3]}),Promise.resolve({代码:200,数据:[4,5,6]}),Promise.resolve({code:200,data:[7,8,9]}),]).then(res=>{console.log(res)console.log("success")}).catch(err=>{console.log(err)console.log("Failed")})//[{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("failure")})//{code:500,data:Array(0)}failure完全覆盖了请求成功的回调,所以在es11中引入了Promise.allSettled方法,使用方法如下Promise.allSettled([Promise.resolve({code:200,数据:[1,2,3]}),Promise.reject({code:500,data:[]}),Promise.resolve({code:200,data:[7,8,9]}),]).then(res=>{console.log(res)console.log("success")}).catch(err=>{console.log(err)console.log("failure")})//[{status:"fulfilled",value:{code:200,data:[1,2,3]}},{status:"rejected",value:{code:500,data:[]}},{status:"fulfilled",value:{code:200,data:[7,8,9]}}]最后,您可以使用数据的状态和值,通过应用filter或map高阶函数进一步过滤数据。又是提高技能的一天,大家。一起努力吧!也可以扫描二维码,关注我微信公众号,蜗牛全栈
