前端基础知识之封装 Promise.allSettled()

381 阅读1分钟

今天我们来总结一下怎么使用 Promise.allSettled() 方法,并尝试手动封装它来解决一定的兼容性问题。

如何使用

Promise.allSettled() 方法与 Promise.all() 类似,它也接收一系列的 promise 实例,但是这个方法不会失败,而且特别的是他会把得到的结果放在一个数组中。

Promise.allSettled([Promise.reject(1), Promise.resolve(2), Promise.reject(3)])
    .then((values)=>{
        console.log(values)
    })
    
//[{status: "rejected", reason: 1},
   {status: "fulfilled", reason: 2},
   {status: "rejected", reason: 3}]

手动封装

为了解决其兼容性问题,我们可以手动封装这个方法:

const helper = (promiseList)=>{
    return promiseList.map((promise)=>{
        return promise
                .then(
                    (result)=>{return {status: "fulfilled", result: result}},
                    (reason)=>{return {status: "rejected", result: reason}}
                )
    })
}
myAllSettled = (promiseList)=>{
    return Promise.all(helper(promiseList));
}

©本总结教程版权归作者所有,转载需注明出处