자바스크립트의 이벤트 루프(Event Loop) 는
싱글 스레드 언어인 JavaScript가 비동기 작업을 효율적으로 처리할 수 있게 하는 핵심 메커니즘이다.
자바스크립트는 기본적으로 한 번에 하나의 작업만 처리할 수 있는 싱글 스레드 언어이다.
그런데 어떻게 API 요청, setTimeout, UI 반응 등 다양한 작업을 동시에 처리할 수 있을까?
그 답이 바로 이벤트 루프에 있다!
이벤트 루프는
"콜 스택이 비어 있을 때, 대기 중인 비동기 콜백들을 하나씩 실행시켜주는 메커니즘"이다.

JavaScript의 실행 구조는 다음처럼 구성되어 있다.
console.log('1');
setTimeout(() => {
console.log('2');
}, 0);
Promise.resolve().then(() => {
console.log('3');
});
console.log('4');
// 출력 결과
1
4
3
2
'1' -> 동기 -> 즉시 실행setTimeout() -> Web API -> MacroTask Queue에 등록Promise.then() -> MicroTask Queue에 등록'4' -> 동기 -> 즉시 실행32setTimeout(() => {
console.log("Hello");
}, 0);
위 코드는 "0초 뒤에 실행" 되는 것이 아니라
즉, 동기 코드가 모두 끝난 후에 실행이 된다!!
| 종류 | 설명 | 대표 API |
|---|---|---|
| MacroTask Queue | 일반적인 비동기 작업이 대기 | setTimeout, setInterval, DOM 이벤트 등 |
| MicroTask Queue | 우선순위가 높은 비동기 | Promise.then(), queueMicrotask() 등 |
이벤트 루프는 자바스크립트 비동기 처리의 핵심이자,
성능 최적화와 버그 해결에 있어서도 매우 중요한 개념이다.
다음에는 requestAnimationFrame, queueMicrotask 같은 심화 개념도 정리해보자! 🚀