태스크큐에는 마이크로큐와 매크로큐가 있다
마이크로큐: await, Promise같은 것들이 담김
매크로큐: setTimeout,setInterval 같은 것들이 담김
매크로큐보다 마이크로큐가 우선순위가 높아 마이크로큐가 비워질때까지 매크로큐는 진행하지 않는다
const aaa = () => {
try {
axios.get("https://#");
} catch (error) {
console.log("에러가 발생하였습니다!");
}
aaa();
};
위 코드에서 catch문이 정상작동 하지를 않는다
그 이유는
axios는 Promise 즉 aixos.get은 마이크로큐로 사라지게 되고
그럼 try는 비어버리게 된다
즉 try-catch문이 끝나게 되는것
그 후에 마이크로큐에 잇는 axios를 읽을때 에러를 발생하기때문에
try-catch문이 정상작동 하지를 않는것이다
그럼 해결방법은 무엇일까??
const bbb = async () => {
try {
await axios.get("https://#");
} catch (error) {
console.log("에러가 발생하였습니다!");
}
};
bbb();
};
위와 같이 axios 앞에 await를 해서 try-catch문도 같이 마이크로큐로 보내버림으로써 해결이 가능하다