Call-Back, Callback   콜백

(2021-06-02)

Callback Function, 콜백 함수, 컬백 지옥


1. [프로그래밍]  콜백 기법, 콜백 함수

  ㅇ 호출하는 쪽과 호출받는 쪽이 반전되어짐 (제어권 역전)

  ㅇ 콜백 함수의 사용 이유
     - 함수 내 변하지 않는 공통 로직은 그대로 두고,
     - 가변적인 로직은, 외부에서 추상화해서(즉, 함수화해서),
     - 필요시 마다 그에 맞는 함수 그 자체를 인수로써 전달 받아 사용할 수 있으면,
     - 함수 정의를 외부에서 별도로 가변화 할 수 있어서, 유연성이 커짐 
     - 이는 수학적으로, 함수의 합성과도 비슷함

  ㅇ 콜백 함수의 사용 방식
     - 호출되는 함수의 괄호 () 내에, 콜백 함수인수로써 전달하고,
     - 호출되는 함수의 내부에서, 인수로써 전달받은 그 콜백 함수를 실행시킴

  ㅇ 콜백 함수 이란?
     - 다른 함수인수로써 넘겨질 수 있는 함수 임
        . 즉, 함수(또는,객체)를 매개변수로써 전달하고서,
        . 그것으로하여금 역 호출 등을 하게 함
     - 이때, 인수(콜백 함수)로써 넘겨 받은 함수(호출된 함수)는,
        . 그 인수(콜백 함수)가 작업하는 내용에는 관여하지 않음

  ㅇ 콜백 함수의 특징
     - 실행시 제어권을 콜백 함수가 행사함 (제어 역전)
        . 호출되는 함수인수로써 넘겨지는 콜백 함수의 경우에,  ☞ 고차 함수 참조
        . 호출되는 함수 쪽에서 인수로써 넘겨진 콜백 함수에게 제어권을 부여하게  됨
     - 콜백 함수의 선택 주체는 호출자
        . 어떤 콜백 함수를 쓸지는 호출자의 고유 권한 임
     - 호출된 함수는 콜백 함수의 작업 내용에 관여 안함 
        . 호출된 함수는 콜백 함수를 실행하지만,
        . 그 콜백 함수가 작업하는 내용에는 관여하지 않게됨

  ㅇ 콜백 함수의 사용 시기
     - 주로, 특정 이벤트(성공,실패,종료 등) 발생시, 
     - 그에 맞춘 적당한 콜백 함수를 수행

  ㅇ 콜백 함수의 용도 例)
     - 콜백 함수를 사용한 비동기식 처리 모델 (JavaScript에서 빈번히 사용됨)
        . 여기서, 비동기식 처리 모델 이란? 
           .. 호출될 콜백 함수를 미리 파라미터(매개변수)로써 전달해 놓고, 
           .. 특정 이벤트(처리 종료 등)가 발생하면,
           .. 그에따라 콜백 함수를 호출케 하는 것
        . JavaScript 주요 사용 例) 타이머 함수, 이벤트 처리, Ajax 처리 등

  ㅇ 콜백 함수의 단점 : 콜백 지옥(callback hell)
     - 중첩된 콜백 함수의 실행이 잦아짐
        . 例) 외부 데이터를 가져올 때, 그 결과에 따라 또다른 콜백 함수를 실행하고,
           .. (요청이 성공/실패 또는 결과 값에 따라 등등)
           .. 또다시, 그 결과에 따라 또다른 콜백 함수를 중첩 실행하는 등
     - JavaScript에서 콜백 지옥의 대안 : 프라미스 객체(Promise)


2. [일반 전화]  콜백 서비스

  ㅇ 걸려온 전화를 끊은 후에 다시 발신자에게 전화를 되걸어주는 것

  ㅇ 국제전화 콜백 서비스
     - 두 나라 사이의 국제 전화 요금이 차이가 나는 것을 이용
     - 주로, 요금이 싼 나라(미국 등)의 사업자들이 요금이 상대적으로 비싼 나라(통신사업을
       독점하거나 국가에서 운용 등)에 진출하여, 그 나라의 가입자가 거는 국제 전화를
       콜백 기능에 의해 자기 나라의 발신으로 처리해 주고 요금을 받는 형태
     - 즉, 국제 전화 요금이 비싼 측에서 전화를 거는 경우에, 호출 신호만을 보낸 뒤 끊으면
       상대측에서 되걸어 주는 등의 방법으로 전화 요금을 싸게하고 그 대가를 받는 서비스



Copyrightⓒ written by 차재복 (Cha Jae Bok)
"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"