Callback 함수 정의 및 사용하기

procedure

Callback 함수 정의 및 사용하기

프로그래밍에서 콜백(callback) 또는 콜백 함수(callback function)는 다른 코드의 인수로서 넘겨주는 실행 가능한 코드를 말한다. 콜백을 넘겨받는 코드는 이 콜백을 필요에 따라 즉시 실행할 수도 있고, 아니면 나중에 실행할 수도 있다. – 위키백과

장비 또는 다른 호스트의 프로세스와 통신을 비롯하여 여러 비동기적인 처리를 할 때 유용하게 사용할 수 있는 프로그램이 기법이라고 생각된다. 언제 종료될 지 모르는 함수를 기다리는것은 자원낭비가 아닐 수 없다. 하지만 “처리 다 되면 내 코드 실행해줘!” 라고 하는것이 바로 콜백이다.

callback procedure
callback procedure

콜백을 볼 수 있는 곳

이벤트와 관련된 비동기적으로 처리되는 곳에서 많이 볼 수 있을 것이다. 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);

사용하기

callback 개발
callback 개발
  • 콜백을 만들어야하는 개발자
    콜백을 사용할 개발자들이 함수 호출 후 마지막에 원하는 결과가 무엇인지 먼저 생각한 후 그 결과를 인자로 하는 함수를 함수 마지막에 실행한다 라는 생각으로 만들면 된다.

우선 내가 콜백을 만들어야 했던 이유는 비동기적으로 처리해야할 목적도 있었지만 특정 라이브러리에 종속되지 않으려고[2] 콜백으로 구현했다.

  • 콜백을 사용하는 개발자
    특별할 것 없으며 콜백에 대한 이해, 흐름만 알고 있으면 충분히 사용하여 개발할 수 있을 듯 하다.

  1. 내가 포스팅한 글 중 “XMLHttpRequest “AJAX” 사용하기” ↩︎
  2. 현재 다니고 있는 회사는 MFC Application을 이용하며 윈도우 메시지큐를 이용하여 결과를 전달하는 방식을 사용하고 있다. 이러면 윈도우 MFC 앱만 사용해야 하는거 아닌가 ↩︎

게시됨

카테고리

,

작성자

%d 블로거가 이것을 좋아합니다: