02 / 22 Today I Learned (TIL)

CMK·2023년 2월 22일
0

Today I Learned

목록 보기
24/40

태스크큐에는 마이크로큐와 매크로큐가 있다

마이크로큐: 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문도 같이 마이크로큐로 보내버림으로써 해결이 가능하다

0개의 댓글