자바스립트에서 어떻게 비동기가 작동될까?
EventLoop의 작동원리
eventloop async
EventLoop
## 자바스크립트는 싱글쓰레드 언어이다.
그러나 실제로는 비동기로 처리가 가능하다. 왜 그럴까?
브라우져에서 지원하는 기능때문에 가능하다. 브라우져에서는 Web API와 callback queue라는게 있는데 이 두개를 가지고 필요한 비동기 작업을수행한다.
간단 요약
- WEB API : DOM(Document) AJAX(XMLHttpRequest) Timeout(setTimeout) 내장되어 있다.
- Task Queue(Callback Queue) : Web API에서 비동기 작업이 완료된 후 호출된 콜백 함수들이 대기하는 공간
- Event Loop : 콜 스택과 태스크 큐를 수시로 확인하며 콜 스택이 비었을경우 태스크 큐에 있는 작업들을 콜 스택으로 넘겨준다.
Task Queue 1) Microtask Queue
2) Macrotask Queue : setTimeout() setInterval(0 setImmediate() 같은 task를 넘겨받는다.