싱글 스레드 방식
한 번에 하나의 태스크만 실행 할 수 있는 싱글 스레드 방식으로 동작한다.
자바스크립트 엔진은 단 하나의 실행 컨텍스트를 갖는다.
즉, 함수를 실행할 수 있는 창구가 단 하나이며, 동시에 2개 이상이 함수를 동시에 실행할 수 없다.
싱글 스레드로 동작하는 것은 자바스크립트 엔진이다. 브라우저는 멀티 스레드 방식으로 동작한다.
블로킹
작업 중단. 처리에 시간이 걸리는 태스크를 실행하는 경우 발생.
태스크를 순서대로 하나씩 순서대로 처리하므로 순서가 보장된다는 장점이 있지만 앞선 태스크들이 종료될 때까지 이후의 태스크들이 블로킹되는 단점이 있다.
태스크가 종료되지 않은 상태라 해도 다음 태스크를 곧바로 실행한다. 블로킹이 발생하지 않지만 순서가 보장되지 않는다는 단점이 있다.
이벤트 루프는 콜 스택과 태스크 큐를 돌면서 콜 스택이 비어있는지 감지하고 비어있으면 태스크큐에 대기중인 함수를 콜 스택에 푸시한다. 푸시하는 방식은 FIFO(First In First Out)으로 태스크큐에 먼저 대기 중이던 함수가 콜 스택에 먼저 푸시된다.
setTimeout 이나 setInterval과 같은 비동기 함수의 콜백 함수 또는 이벤트 핸들러가 일시적으로 보관되는 영역.