자바스크립트는 싱글스레드인데, 어떻게 비동기 처리가 가능한거지?
자바스크립트 자체에서 비동기 처리를 하는게 아니라 브라우저의 도움을 받는다.자바스크립트는 비동기 요청문을 보면 그걸 자기가 실행하는게 아니라 브라우저API를 사용해서 브라우저에게 비동기 처리를 맡겨버린다.
function main() {
console.log('A');
setTimeout(
function display() { console.log('B'); }
, 0);
console.log('C');
}
main(); //A, C, B 순서로 출력
위 코드가 실행되면 어떤일이 펼쳐지는지 자세히 살펴보자.
main함수가 콜스택에 삽입된다.main함수가 실행되고 console.log('A'); 구문이 실행되어 콘솔에 A가 찍힌다.브라우저에게 0초 뒤에 display() 콜백함수를 실행시켜달라는 명령이다.(자바스크립트 코어 → 브라우저)