자바스크립트 엔진은 하나의 실행 컨텍스트 스택을 갖는다. 즉, 싱글 스레드 방식으로 동작하기 때문에 한 번에 하나의 태스크만 실행할 수 있다.
현재 실행 중인 태스크가 종료할 때까지 다음에 실행될 태스크가 대기하는 방식을 동기처리 라고 한다.
하나의 태스크만 실행할 수 있기 때문에 처리 시간이 오래 걸리는 태스크를 실행하는 경우 블로킹이 발생한다.
현재 실행 중인 태스크가 종료되지 않은 상태라 해도 다음 태스크를 곧바로 실행하는 방식을 비동기처리라고 한다.
비동기 처리를 위해 콜백 패턴을 많이 사용했지만 가독성과 예외처리 문제 때문에 Promise와 같은 방법이 탄생했다.
이벤트 루프 과정에서 언급되는 여러 용어에 대해 정리한다.
우선 자바스크립트 엔진의 영역에 대한 용어에 대해 정리한다.
다음은 비동기를 위해 브라우저 환경이 제공하는 것들이다.
예시 코드와 그림으로 자세히 살펴보겠다.
console.log("Hi!");
setTimeout(function timeout() {
console.log("Click the button!");
}, 1000);
console.log("Welcome to loupe.");