함수를 호출 → 평가된 함수코드로 함수 실행 컨텍스트 생성 → 실행 컨텍스트 스택(콜스택) 에 푸시 →함수 실행 →함수 실행 종료 → 스택에서 제거됨
다음에 실행 될 태스크가 대기하는 방식
⇒ 실행순서 보장 , 블로킹 단점
다음 태스크를 곧바로 실행하는 방식을 비동기 처리 라고 한다.
⇒ 블로킹이 발생x , 태스크의 실행 순서가 보장 되지 않는 단점
자바 스크립트 엔진은 싱글 스레드 이기에 브라우져의 내장기능인 이벤트 루프로 동시성을 지원 따라서 브라우져는 멀티 스레드로 동작한다.
따라서 브라우져와 자바스크립트 엔진이 협력하여 비동기 함수를 실행한다.
자바스크립트 엔진은 2가지 영역으로 구분한다.

콜스택 (실행컨텍스트 스택)
힙
힙과 콜 스택으로 구성되어있는 자바스크립트 엔진은 콜 스택을 통해 요청된 작업을 순차적으로 시행
비동기 처리에서 소스코드의 평가와 실행을 제외한 모든 처리는 자바스크립트 엔진을 구동하는 환경인 브라우져 가 담당.
호출 스케쥴링을 위한 타이머 설정과 콜백 함수의 등록은 브라우져 또는 node.js가 담당한다. 이를 위해 브라우져 환경은 태스크 큐와 이벤트 루프를 제공한다.

태스크 큐 →매크로 태스큐
setTimeout 이나 setInterval 같은 비동기 함수의 콜백함수 또는 이벤트 핸들러가 일시적으로 보관되는 영역이벤트 루프
결론 : 비동기 함수인 콜백 함수는 태스크 큐에서 대기하다가 콜스택이 비게되면, 다시 말해 전역 코드 및 명시적으로 호출된 함수가 모두 종료하면 비로소 콜 스택에 푸시되어 실행된다.
https://developer.mozilla.org/ko/docs/Web/API/Window/queueMicrotask