小编最近因为一些本人的问题,没有更新文章。明天刚好有一点精力头,特意来更新一下,明天和大家一起探讨的是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高阶函数进一步筛选数据。又是减少技能的一天,大家一起加油!
大家还能够扫描二维码,关注我的微信公众号,蜗牛全栈