老师帮忙看下。为什么捕获错误失败了
来源:5-1 Promise 的注意事项
qq_慕慕0057983
2022-04-13 23:47:50
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Promise.all()</title>
</head>
<body>
<script>
const delay=ms=>{
return new Promise(resolve=>{
setTimeout(resolve,ms)
})
}
const p1=delay(1000).then(()=>{
console.log('执行第一个')
return 'p1'
})
const p2=delay(2000).then(()=>{
console.log('执行第二个')
// return 'p2'
return Promise.reject('reason')
})
const p3=delay(3000).then(()=>{
console.log('执行第三个')
return 'p3'
// return Promise.reject('reason')
})
const p_all=Promise.all([p1,p2,p3])
const p_race=Promise.race([p1,p2,p3])
//如果最终p的状态为rejected 那么不会执行第一条语句
// p_all.then(
// data=>{
// console.log(data)
// },
// err=>{
// console.log(err)
// }
// )
// 1.Promise.race()
// Promise.race() 的状态取决于第一个完成的 Promise 实例对象,如果第一个完成的成功了,那最终的就成功;如果第一个完成的失败了,那最终的就失败
p_race.then(
data=>{
console.log(data)
},
// err=>{
// console.log(err)
// }
).catch(err=>
console.log(err)
)
</script>
</body>
</html>1回答
好帮手慕小李
2022-04-14
同学你好,在使用Promise.race的时候他与Promise.all的机制是不一样的,all是等全部走完,而race则有些像是在赛跑,那么当race第一个如果是成功了以后后面的全部都会走成功,所以同学这里并没法捕获到,同学可以稍作一下更改后看效果,如下:


同学自己试试,祝学习愉快!
相似问题