单个promise 串联执行:
new Promise((resolve, reject)=>{
setTimeout(()=>{
let r = Math.random()
if (r >= 0.5){
reject('r gt 0.5: r='+r)
}else{
resolve('r lt 0.5: r='+r)
}
}, 3000)
}).then(res1=>console.log("resoved :"+res1))
.then(r3=>console.log('r3 ',r3))
.catch(err=>console.log("rejected:"+err))
.then(r4=>console.log('end ',r4))
多个promises 并发后等待所有promise settle:
let pArr = [
new Promise((resolve, reject)=>{
setTimeout(()=>{
let r = Math.random()
if (r >= 0.5){
reject('p1 r gt 0.5: r='+r)
}else{
resolve('p1 r lt 0.5: r='+r)
}
}, 3000)
}),
new Promise((resolve, reject)=>{
setTimeout(()=>{
let r = Math.random()
if (r >= 0.5){
reject('p2 r gt 0.5: r='+r)
}else{
resolve('p2 r lt 0.5: r='+r)
}
}, 4000)
}),
new Promise((resolve, reject)=>{
setTimeout(()=>{
let r = Math.random()
if (r >= 0.5){
reject('p3 r gt 0.5: r='+r)
}else{
resolve('p3 r lt 0.5: r='+r)
}
}, 1000)
})
]
Promise.allSettled(pArr)
.then(rs=>rs.forEach((rv) => console.log(rv)))