자바스크립트는 한 번에 한 가지 일만 할 수 있는 싱글쓰레드 언어이기에 동기적 언어이다.
단점:
오래 걸리는 작업은 뒤에 있는 작업들이 대기해야 하는 블러킹 현상이 발생한다.
이 문제는 비동기 프로그래밍으로 해결한다.
오래 걸리는 작업은 기다리지 않고 다음 작업으로 넘어간다.

이와 같이 setTimeout의 2초를 기다리지 않고 1, 3, 2 순서대로 출력되는게 대표적인 예시다
이런 비동기 프로그래밍이 가능한 이유는 자바스크립트의 동작원리를 참고하자.

웹api는 자바스크립트 엔진이 아닌 별도의 브라우저 환경에서 실행된다.