专栏目录请点击
简介
在Promise对象上面一共提供了很多组合方法供我们使用,他们都接受多个promise对象,然后返回一个表示组合结果的新的promise,依据传入的promise的结果状态,返回的新的promise切换为不同的状态
常用方法
他们的参数都是一个
promise
数组
promise.all
:返回一个组合后的promise
,当传入的所有的promise全部转化为fulfill状态的时候,组合后的promise
也会变为fulfill状态。但是如果有一个promise的状态为rejected状态,那么返回的组合后的promise也是rejected状态promise.race
返回一个组合后的promise,当传入的promise有任意一个切换为fulfill状态或rejected状态的时候,改promise将会立即切换为相同的状态promise.allSettled
:返回一个组合后的promise,当多有的promise全部切换为fulfilled状态或者rejected状态时。改promise将切换为fulfilled状态(当所有的异步全部执行完后,返回的promise就会变为fulfilled状态)promise.any
:返回一个组合后的promise,当传入的promise状态有一个是fulfilled状态的时候,他会立即变为fulfilled状态
例子
我们执行下面的代码
const async1 = () => {
return new Promise((resolve,reject) => {
setTimeout(() => {
resolve("hello")
},2000)
})
}
const async2 = () => {
return new Promise((resolve,reject) => {
setTimeout(() => {
reject("world")
},2000)
})
}
const async3 = async () => {
const result = await Promise.allSettled([async1(),async2()])
console.log(result);
console.log(result.length);
return result
}
async3()
打印如下
- 我们会发现他们最终拿到的是一个数组,数组内是每一个
promise
执行的结果 - 引入返回的是一个数组,我们可以通过数组的方法找出执行成功或者失败的
promise
// 获取所有 fulfilled 状态的结果信息
results.filter( result => result.status === "fulfilled" )
// 获取所有 rejected 状态的结果信息
results.filter( result => result.status === "rejected" )