blevels

Home / AI / AI 용어사전 / 콜백(Callback) — 비동기의 시작, 함수를 인수로 넘기는 패턴

TERM

콜백(Callback) — 비동기의 시작, 함수를 인수로 넘기는 패턴

게시일 2026-04-30수정일 2026-04-30
공식 링크
On this page

Promise가 등장하기 전, JavaScript 비동기의 모든 것은 콜백(Callback) 하나로 처리됐다. 비동기 패턴의 원형을 이해하려면 반드시 콜백에서 시작해야 한다.

정의

콜백(Callback)은 다른 함수에 인수(argument)로 전달되어, 특정 조건이 충족되거나 특정 이벤트가 발생했을 때 호출(call back)되는 함수다. "나중에 불러줘"라는 약속을 코드로 표현한 것이다. 동기(synchronous) 콜백과 비동기(asynchronous) 콜백으로 나뉘며, AI 서비스에서는 API 응답 완료, 스트림 데이터 수신, 이벤트 처리 등에 비동기 콜백이 광범위하게 쓰인다.

동기 vs 비동기 콜백

동기 콜백(Synchronous Callback): 콜백이 전달된 즉시 실행된다. Array.prototype.map, forEach, filter 등이 대표적이다. 코드 흐름을 차단하며 순서대로 실행된다.

const responses = ['안녕', '반가워', '잘 부탁해'];
const lengths = responses.map((text) => text.length); // 동기 콜백
console.log(lengths); // [2, 3, 5]

비동기 콜백(Asynchronous Callback): 특정 작업이 완료된 이후에 실행된다. 파일 읽기, 네트워크 요청, 타이머가 해당된다. Node.js 초기 생태계가 이 패턴을 중심으로 설계됐다.

// 에러 퍼스트 콜백 (Node.js 관례)
fs.readFile('config.json', 'utf8', (error, data) => {
  if (error) {
    console.error('파일 읽기 실패:', error);
    return;
  }
  const config = JSON.parse(data);
  initAI(config);
});

Node.js의 비동기 함수 대부분은 콜백의 첫 번째 인수로 오류 객체를 전달하는 에러 퍼스트 콜백(Error-First Callback) 관례를 따른다. 오류가 없으면 null이 전달된다.

AD

콜백 지옥(Callback Hell)

여러 비동기 작업을 순서대로 처리해야 할 때, 콜백이 콜백을 감싸고, 다시 콜백이 감싸는 구조가 만들어진다. 이를 콜백 지옥(Callback Hell) 또는 피라미드 오브 둠(Pyramid of Doom)이라 부른다.

// 콜백 지옥 예시
getToken((err, token) => {
  if (err) return handleError(err);
  fetchUser(token, (err, user) => {
    if (err) return handleError(err);
    fetchAIPreferences(user.id, (err, prefs) => {
      if (err) return handleError(err);
      callAI(prefs.model, (err, result) => {
        if (err) return handleError(err);
        // 실제 로직은 4단계 들여쓰기 안에 있음
        console.log(result);
      });
    });
  });
});

가독성 저하, 오류 처리 반복, 유지보수 어려움이 콜백 지옥의 핵심 문제다. 이 문제를 해결하기 위해 promise가 도입됐고, 이후 async-await 문법이 비동기 코드를 동기 코드처럼 작성할 수 있게 만들었다.

활용 사례

  • 이벤트 리스너: 버튼 클릭, 사용자 입력 이벤트에 콜백을 등록해 AI 처리 트리거.
  • 스트리밍 응답 처리: Anthropic API의 스트리밍 모드에서 토큰이 수신될 때마다 콜백으로 UI를 실시간 업데이트.
  • 고차 함수(Higher-Order Function): map, filter, reduce 등 배열 메서드에 콜백을 전달해 AI 응답 데이터 가공.

관련 용어

  • promise — 콜백 지옥 해결을 위해 도입된 비동기 처리 객체
  • async-await — Promise 기반의 동기식 비동기 코드 작성 문법
  • higher-order-function — 함수를 인수로 받거나 반환하는 함수
  • event-loop — 비동기 콜백의 실행 순서를 관리하는 JavaScript 런타임 메커니즘
  • error-handling — 비동기 콜백의 오류를 처리하는 에러 핸들링 패턴
AD

백링크

이 문서를 참조하는 다른 페이지입니다.