TIL

JS의 동작원리

하얀잔디 2025. 6. 29. 21:07

 

 

 

자바 개발을 했던 나에게는 매우 생소했던 개념이었다.

 

 

 

 console.log('1')

setTimeout(() => {

  console.log('2')

}, 0)

Promise.resolve().then(() => {

  console.log('3')

})

console.log('4')

 

 

을 수행하면 출력이 어떻게 될까~~~???

 

 

 

 

출력결과 ) 1 4 3 2 임 ㄷㄷㄷㄷ

 

이유 )

 

콜스택 큐 -> 마이크로테스트 큐 ( promise ) -> 콜백 큐 ( setTimeout) 같은걸로함.

 

 

 

 

while (true) {

  // 아무 것도 안 하고 반복

}

결과:

CPU 100% 점유

 

Node.js는 단일 스레드라서,

 

아래와 같은 모든 작업이 멈춥니다:

 

클라이언트 요청 처리

 

타이머 (setTimeout)

 

Promise.then, async/await

 

소켓 통신 등

 

🧠 왜 멈추냐면?

Node.js는 이벤트 루프 기반입니다.

→ "콜 스택이 비면" 비동기 작업들이 처리돼요.

 

하지만 while (true)는 콜 스택을 절대 비우지 않기 때문에,

다른 이벤트들이 실행될 기회를 아예 주지 않아요.

 

'TIL' 카테고리의 다른 글

모르는 서버 접근 후 프로세스 확인방법  (0) 2025.07.04
Console vs Winston  (3) 2025.07.04
DB 차이점 정리  (0) 2025.06.29
소켓에서 레디스를 왜 쓸까?  (0) 2025.06.29
istio란?  (0) 2025.05.29