Promise.all 可以多个promise请求并发,但是有个缺点,就是其中一个请求挂掉的话,就不会执行then方法,也就是说,一个挂掉等于全部挂掉,
这个时候得用Promise.allSettled来代替Promise.all,这个方法能不管你请求挂没挂,或者有几个挂了,都给你返回。
Promise.allSettled 的用法跟Promise.all一样,也是传入一个promise数组,但是 .then的回调函数的 参数不一样 promise.all返回的是一个数组,里面每个项都是按照你传入的promise的先后顺序执行的结果,Promise.allSettled返回的则是一个对象数组
这个对象数组每一个item,都有两个属性,一个status 值为 "fulfilled" 或者 "rejected" ,另一个value才是你要的执行结果,所以这里我们还得判断一下这个status是否为fulfilled,再去改成我们想要的数据结构
网友评论