共计 1320 个字符,预计需要花费 4 分钟才能阅读完成。
小编最近因为一些本人的问题,没有更新文章。明天刚好有一点精力头,特意来更新一下,明天和大家一起探讨的是 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 高阶函数进一步筛选数据。又是减少技能的一天,大家一起加油!
大家还能够扫描二维码,关注我的微信公众号,蜗牛全栈
正文完
发表至: javascript
2021-08-14