JavaScript Visualized - Event Loop, Web APIs, (Micro)task Queue

function longRunnigTask() {
let count = 0;
for (let j = 0; j < 1e9; j++) {
count++;
}
console.log("Long task done!");
}
function importantTask() {
console.log("Important!");
}
longRunningTask();
importantTask(); 콜 스택은 longRunningTask 함수가 끝날 때까지 importantTask 함수를 실행할 수 없기 때문에, 중요한 작업이 오랫동안 미뤄질 수가 있다. 이런 긴 실행 작업이 필요할 때, 프로그램의 진행이 멈추지 않도록 Javascript 에서는 web APIs를 통해 일부 기능을 제공한다.브라우저가 활용하는 기능과 상호작용할 수 있는 인터페이스 세트를 제공한다.
여기에는 자주 사용하는 Document Object Model, fetch, setTimeout 등이 포함된다.
자바스크립트 런타임과 브라우저 기능 간의 다리 역할을 한다.
비동기 작업이 시작되면 이를 Web APIs로 전달하고, 콜 스택의 해당 실행 컨텍스트는 제거된다.
여기서 비동기 작업은 callback 형태와 promise 형태로 나누어진다.
모든 Web APIs가 비동기 작업을 다루는 것은 아니다.

then(callback), catch(callback), finally(callback)같은 프로미스 핸들러의 콜백 함수async 함수 내의 await뒤 따라오는 작업MutationObserver 콜백 함수queueMicrotask 콜백 함수[javascript-questions/ko-KR/README-ko_KR.md at master · lydiahallie/javascript-questions]