Callback 함수 정의 및 사용하기
프로그래밍에서 콜백(callback) 또는 콜백 함수(callback function)는 다른 코드의 인수로서 넘겨주는 실행 가능한 코드를 말한다. 콜백을 넘겨받는 코드는 이 콜백을 필요에 따라 즉시 실행할 수도 있고, 아니면 나중에 실행할 수도 있다. – 위키백과
장비 또는 다른 호스트의 프로세스와 통신을 비롯하여 여러 비동기적인 처리를 할 때 유용하게 사용할 수 있는 프로그램이 기법이라고 생각된다. 언제 종료될 지 모르는 함수를 기다리는것은 자원낭비가 아닐 수 없다. 하지만 “처리 다 되면 내 코드 실행해줘!” 라고 하는것이 바로 콜백이다.

콜백을 볼 수 있는 곳
이벤트와 관련된 비동기적으로 처리되는 곳에서 많이 볼 수 있을 것이다. Javascript 라면 XMLHttpRequest()[1]의 onreadystatechange에 콜백을 정의하고 send()를 실행하게 된다. 이 때 서버로부터 응답이 오면 콜백을 실행시켜준다.
var xhr = new XMLHttpRequest; ... xhr.onreadystatechange = function () { if (xhr.readyState == 4 && xhr.status == 200) { if (xhr.responseText == "valid") { document.getElementById ( "valid"). innerHTML = "ID가 중복되었습니다."; } else if (xhr.responseText == "invalid") { document.getElementById ( "valid"). innerHTML = "사용 ID입니다."; } } } ... xhr.send ( "id ="+ document.indexform.id.value);
사용하기

- 콜백을 만들어야하는 개발자
콜백을 사용할 개발자들이 함수 호출 후 마지막에 원하는 결과가 무엇인지 먼저 생각한 후 그 결과를 인자로 하는 함수를 함수 마지막에 실행한다 라는 생각으로 만들면 된다.
우선 내가 콜백을 만들어야 했던 이유는 비동기적으로 처리해야할 목적도 있었지만 특정 라이브러리에 종속되지 않으려고[2] 콜백으로 구현했다.
- 콜백을 사용하는 개발자
특별할 것 없으며 콜백에 대한 이해, 흐름만 알고 있으면 충분히 사용하여 개발할 수 있을 듯 하다.
- 내가 포스팅한 글 중 “XMLHttpRequest “AJAX” 사용하기” ↩︎
- 현재 다니고 있는 회사는 MFC Application을 이용하며 윈도우 메시지큐를 이용하여 결과를 전달하는 방식을 사용하고 있다.
이러면 윈도우 MFC 앱만 사용해야 하는거 아닌가↩︎