자바스크립트 비동기 처리의 핵심
자바스크립트는 싱글 쓰레드로 동작하지만, Web APIs를 통해 효율적으로 비동기 작업을 처리한다. 이를 통해 복잡한 작업을 효율적이고 원활하게 처리할 수 있다.
자바스크립트의 동기적 처리 방식
자바스크립트는 기본적으로 모든 코드를 위에서 아래로 순차적으로 실행하는 동기적 언어다. 하지만 시간이 오래 걸리는 작업이 있다면 전체 코드의 실행 흐름이 막혀버릴 수 있다. 이러한 문제를 해결하기 위해 자바스크립트는 비동기 처리 방식을 사용하고 있다.
만약 우리가 카페에서 커피를 주문한다면?
비동기 처리를 이해하기 쉽게 예를 들어보자. 커피숍에서 손님이 주문을 하고 커피가 나올 때까지 기다린다고 상상해보자. 만약 점원이 손님 한 명의 주문을 받고 커피를 다 만든 뒤에야 다음 손님의 주문을 받는다면, 대기줄은 금세 길어지고 손님들은 지쳐버릴 것이다. 하지만 점원이 주문만 받고 커피 만드는 일은 다른 직원에게 맡긴다면, 점원은 빠르게 여러 손님의 주문을 받을 수 있다.
자바스크립트의 비동기 처리 방식
자바스크립트도 마찬가지다. 싱글 쓰레드로 동작하기 때문에 동시에 여러 작업을 처리할 수 없다. 그래서 시간이 오래 걸리는 작업(네트워크 요청, 타이머 etc.)은 Web APIs에게 맡겨두고 자바스크립트 엔진은 동기적인 코드를 먼저 처리하고, Web APIs에게 비동기 함수의 결과 값을 받아온다.
console.log(1);
setTimeout(() => {
console.log(2);
}, 3000);
console.log(3);
코드 실행 단계
1. console.log(1) 실행
2. setTimeout 함수를 Web APIs에게 맡김
3. console.log(3) 실행
4. 3000ms 뒤에 console.log(2) 실행