下面代码打印什么,为什么
try{ Promise.reject(2) .catch((e)=>{ console.log(e) throw new Error(3) }) }catch(e){ console.log(e) } try{ const data = await Promise.reject(2); console.log(data); console.log(4); throw new Error(3); }catch(e){ console.log(e) }
思路:
Promise.reject(2)是reject这走catch,2则是传递的参数
因此consle.log(e)则打印=========2
throw new Error(3)这里抛出一个错误,并把3传递进去,则被try catch捕获到错误,这是js捕获错误的方式,因此在catch里consle.log(e)则打印=========Error:3
这个我能理解没问题
我的疑惑:
try代码块里面const data=await Promise.reject(2)走了,
我不明白怎么就只走catch,后面异步的代码咋不走了,
不是要放在微任务里吗,等宏任务走完了再走微任务,
只打2不符合事件循环机制啊
请各位大佬帮忙看看
已解决
悬赏分:20
- 解决时间 2021-12-03 06:53
点赞 0反对 0举报 0
收藏 0
分享 2
回答1
最佳
-
你把下面一段try catch放到文件里面再打开试试,await不能单独使用的会报错,但是你在浏览器使用它忽略了而已,其实是报错直接走catch了
支持 0 反对 0 举报2021-12-02 12:05