Mission: Javascript event loop 관련 질문 정리
📌
Javascript event loop에 대해서 설명해주세요.
JavaScript의 이벤트 루프(Event Loop)는 자바스크립트의 비동기 동작을 관리하는 핵심 메커니즘입니다. 이를 간단히 설명하면
- 호출 스택(Call Stack): 코드 실행에 사용되며 함수 호출을 기록합니다. 스택에 있는 함수가 실행 중일 때 다른 함수 호출은 대기합니다.
- 이벤트 큐(Event Queue): 비동기 작업과 이벤트 핸들러(예: 클릭, 타이머 완료)에서 발생한 이벤트를 대기시키는 곳입니다.
- 메시지 큐(Message Queue): 이벤트 큐와 유사하게 작동하며, 비동기 작업 및 이벤트를 저장합니다.
- 이벤트 루프(Event Loop): 호출 스택에서 현재 실행 중인 작업이 없을 때 이벤트 큐(또는 메시지 큐)에서 이벤트를 가져와 호출 스택에 추가합니다. 이를 통해 비동기 코드가 실행되며, 프로그램이 논블로킹(non-blocking)으로 동작합니다.
간단히 말해, 이벤트 루프는 호출 스택을 모니터링하고 비동기 작업이 완료되면 해당 작업을 호출 스택에 넣어 실행합니다. 이를 통해 자바스크립트는 동시성(concurrency)을 제공하면서도 데드락(deadlock)과 같은 문제를 피할 수 있습니다. 이벤트 루프는 비동기 코드를 관리하고 웹 브라우저에서는 브라우저 이벤트를 처리하는 데 사용되며, Node.js에서는 파일 시스템 접근 및 네트워크 요청과 같은 비동기 작업을 관리합니다.