var p1 = new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve('成功')
},1000)
});
var p2 = new Promise((resolve,reject)=>{
setTimeout(()=>{
reject('失败')
},2000)
});
var p3 = new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve('成功')
},3000)
});
var p4 = new Promise((resolve,reject)=>{
setTimeout(()=>{
reject('失败p4')
},3000)
});
Promise all
如果全为Fullfilled 则执行then的内容 ,否则进去catch
Promise.all([p1,p2,p3]).then((res)=>{
console.log(res)
}).catch((error)=>{
console.error(error)
})
Promise.all([p1,p3]).then((res)=>{
console.log(res)
}).catch((error)=>{
console.error(error)
})
Promise.any
和Promise.all 相反 如果全为reject返回catch,有一个fullfilled直接进入then
Promise.any([p1,p2,p3]).then((res)=>{
console.log(res)
}).catch((error)=>{
console.log(error)
})
Promise.any([p2,p4]).then((res)=>{
console.log(res)
}).catch((error)=>{
console.error(error)
})
Promise.race
不管怎么样,返回最快执行的那个,如果是fullfilled进去then,否则进去catch
Promise.race([p2,p3]).then((res)=>{
console.log(res)
}).catch((error)=>{
console.error(error)
})
Promise.allSettled
返回所有结果 , 结果是一个数组,包含状态和返回值,无论结果是reject,都进入then
Promise.allSettled([p1,p2,p3]).then((res)=>{
console.log(res)
}).catch((error)=>{
console.log(error)
})