더북(TheBook)

1.1.2 콜백 함수와 논블로킹 코드

오랫동안 자바스크립트 개발에서는 함수를 콜백으로 사용해왔습니다. 마우스 클릭과 키 입력 이벤트부터 원격 HTTP 요청이나 파일 입출력까지 모든 부분에서 콜백(callback) 함수를 사용합니다. 자바스크립트는 싱글 스레드 언어라서 사용성 수준을 유지하는 데 이러한 구조가 필요합니다. 즉, 데이터를 사용할 준비가 되면 자바스크립트 런타임에 호출할 처리 함수를 제공함으로써 장기 실행 작업의 블로킹 문제를 해결하고자 콜백 함수가 만들어졌습니다. 그동안 애플리케이션은 그림 1-2와 같이 계속해서 다른 작업을 수행할 수 있습니다.

▲ 그림 1-2 자바스크립트의 콜백 함수는 다른 방식으로 애플리케이션을 다시 호출하는 대신에 제어의 역전을 만든다.

 

무조건 대기해야 했던 블로킹 HTTP 호출 방식의 이전 코드와는 달리 비동기(AJAX) 요청과 함께 콜백 함수를 사용하면 애플리케이션이 다음 줄의 코드를 계속 실행하는 제어의 역전(inversion of control)이 발생합니다. 이때 제어의 역전이란 코드의 특정 부분이 런타임 시스템에서 제어의 흐름을 되돌려받는 방식을 일컫습니다. 즉, 콜백 함수가 데이터를 처리할 준비가 되면 런타임이 함수 처리기를 통해 애플리케이션을 다시 호출하거나 제어권을 돌려줍니다. 이러한 특징 때문에 콜백(callback)이라고 합니다. 다음 예를 한번 보겠습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.