JavaScript의 동기 및 비동기 코드
다음 코드를 살펴보겠습니다:
console.log('1');
console.log('2');
분명히, 첫 번째 콘솔 출력이 먼저 실행되고 그 다음에 두 번째가 실행됩니다. 즉, 우리 코드의 명령어는 코드에 나열된 순서대로 하나씩 실행됩니다. 이러한 코드를 동기적(synchronous)이라고 합니다.
이제 다음 코드를 살펴보겠습니다:
setTimeout(function() {
console.log('1');
}, 3000);
console.log('2');
이 경우 명령어는 코드의 순서대로 실행되지 않습니다: 첫 번째 콘솔 출력은 정해진 시간에 실행되지만, 나머지 코드는 그 순간을 기다리지 않고 계속 실행됩니다. 이러한 코드를 비동기적(asynchronous)이라고 합니다.
비동기 코드는 JavaScript에서 꽤 자주 발생합니다: 타이머 작업 시, 이벤트 핸들러를 바인딩할 때, 이미지를 로드할 때, 서버에서 페이지 일부를 로드할 수 있는 AJAX 기술을 사용할 때, 서버 측 JavaScript인 NodeJS로 작업할 때 등입니다.