사용자가 입력하고 평가(실행)하고 결과를 사용자에게 반환하는 환경
Ex) CLI 환경, 크롬 개발자도구 콘솔
함수들이 호출되면서 스택처럼 쌓이는 스택(LIFO)
이벤트리스너의 콜백과 같이 비동기 함수를 넣어두는 큐
태스크 큐도 여러개의 큐로 나눠지고 호출 스택에 불러와질 때 우선 순서가 존재 (FIFO)
Ex) setTimeout, setInterval, setImmediate, promise, async await
호출스택이 비워질 경우 태스크 큐의 우선순위를 확인하여 함수를 호출 스택으로 불러오는 역할
호출스택의 함수를 실행하고 비동기 함수들은 태스크 큐에서 대기하다가 이벤트 루프에 의해 호출스택으로 불려 실행되는 전체적인 흐름
태스크 큐로 보내서 실행순서가 변경되는 것
ex) FileSysytem, Network
한번에 한가지의 일만 해서 만약 어떠한 일이 진행되고 있으면 일이 끝날 때 까지 대기
논 블로킹 I/O와 싱글 스레드
싱글스레드이면 어떤 작업이 진행되고 있을 경우에 대기해야하지만 논 블로킹I/O 이기에 그 오래걸리는 작업을 태스크 큐에 두고 다른 작업을 진행할 수 있게 됨.
모든 콜백함수가 태스크 큐에 들어가는 것이 아니고 이벤트리스너에 달린 콜백함수가 태스크 큐에 들어가게 됨.