Call-Back, Callback   콜백

(2021-06-02)

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


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

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

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

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

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

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

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

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

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


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

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

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

부프로그램/함수/프로시저
   1. 부 프로그램   2. 함수   3. 함수 선언/정의/호출   4. 매개변수   5. 콜백 함수   6. 블록 구조   7. 클로저  
JS 함수
   1. JS 함수   2. JS 함수 종류   3. Function 객체   4. JS 함수 인수   5. this 키워드   6. 화살표 함수 (arrow)   7. 중첩 함수 (nested)   8. 즉시실행함수 (IIFE)   9. 콜백 함수 (CallBack)   10. 클로저 (Closure)   11. 고차 함수  


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