자바스크립트는 싱글 쓰레드!
그러나 웹브라우서나, NodeJs 같은 멀티 쓰레드 환경에서 실행되어짐
싱글 스레드의 비동기 요청?
자바스크립트에서 비동기를 알기 위해 JS 런타임 환경부터 알아야함
자바스크립트가 실행될 때는 다음과 같은 요소들이 실행을 도와준다.
Call Stack: 자바스크립트에서 수행해야 할 함수들을 순차적으로 스택에 담아 처리
Web API: 웹 브라우저에서 제공하는 API로 AJAX나 Timeout등의 비동기 작업을 실행
Task Queue: Callback Queue라고도 하며 Web API에서 넘겨받은 Callback함수를 저장
Event Loop: Call Stack이 비어있다면 Task Queue의 작업을 Call Stack으로 옮김
예시
setTimeout(() => console.log('async chanyeong'));
console.log('hello chanyeong');
위 함수를 실행한다고 할때