이 친구는 싱글스레드 방식으로 일을 처리한다.(싱글스레드=== Call Stack 1개 === 한 번에 하나씩만 처리가능)
마치 팔이 하나 있는 로보트같기에 비동기 방식으로 일을 처리한다.
다음의 그림을 보겠습니다.
우선,자바스크립트 엔진은 Memory Heap 과 Call Stack 으로 구성되어 있다.(그림 왼쪽)
가장 유명한 게 구글의 V8 Engine이다.
자바스크립트는 싱글스레드이다(Call Stack이 하나)
(일을 무조건 하나씩 하나씩 처리)
비동기적으로 실행된 콜백함수가 보관 되는 영역
예를 들어 setTimeout에서 타이머 완료 후 실행되는 함수,
addEventListener에서 콜백 등이 보관된다.
역할
1. Call Stack과 Callback Queue를 감시
2. Call Stack의 실행이 다 끝나서 비어있을 경우에만, Callback queue의 첫번째함수를 꺼내 Call Stack에 추가(이 과정을 tick이라 한다)
왜 첫번째 함수를 꺼내는가?
Queue(큐):자료구조 중 하나,FIFO(First-In-First-Out) 를 따른다.처음 들어온 게 먼저 나간다.
그렇기에 Callback queue에서 먼저 들어온 첫번째 함수가 Call Stack에 먼저 추가