下面代码打印什么,为什么
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不符合事件循环机制啊
请各位大佬帮忙看看
你把下面一段try catch放到文件里面再打开试试,await不能单独使用的会报错,但是你在浏览器使用它忽略了而已,其实是报错直接走catch了
