기본 패턴
javascript
console.log("A");
setTimeout(() => {
console.log("timeout");
}, 0);
Promise.resolve().then(() => {
console.log("promise");
});
console.log("B");설명
- Node.js는 JavaScript 실행 자체는 한 번에 하나씩 처리하지만, I/O 완료 알림과 콜백 큐를 이용해 비동기 작업을 이어갑니다.
- 일반적으로
Promise.then이나await뒤의 작업은 timer보다 먼저 이어지는 경우가 많습니다. - 이벤트 루프를 이해하면 "왜 출력 순서가 이렇게 나오지?" 같은 디버깅이 쉬워집니다.
짧은 예제
javascript
setImmediate(() => console.log("immediate"));
process.nextTick(() => console.log("nextTick"));빠른 정리
| 개념 | 핵심 |
|---|---|
| Call stack | 지금 실행 중인 코드 |
| Task queue | 나중에 실행할 콜백 |
| Microtask | Promise, queueMicrotask 계열 |
| Event loop | 큐에서 작업을 꺼내 실행 |
주의할 점
while(true) 같은 CPU 바운드 작업은 이벤트 루프를 막아 전체 서버 응답을 느리게 만들 수 있습니다.