Callback 함수란
1. 다른 함수의 인자로서 이용되는 함수
2. 어떤 이벤트에 의해 호출되어지는 함수
자바스크립트에서 함수는 object라고 한다.
함수는 다른 함수의 인자로 쓰일 수도 있고 어떤 함수에 의해 리턴될 수도 있다.
이런 함수를 고차 함수라고 한다.
이 고차 함수에서 인자로 넘겨지는 함수를 콜백 함수라고 한다.
함수를 등록해 놓고 어떤 이벤트가 발생했거나 특정 시점에 도달했을 때 시스템에서 호출하는 함수
function printHello(){
print('hello');
}
function printBye(){
print('bye');
}
//특정함수를 매개변수로 받아 3초 뒤에 실행하는 함수
function sleepAndExecute(sleepTimeSecond, callback){
sleep(sleepTimeSecond);
callback();
}
sleepAndExecute(3, printHello);
sleepAndExecute(5, printBye);
sleepAndExecute 함수는 주어진 시간(초)간 대기했다가 콜백함수를 실행시키는 함수다.
이렇게 작성하면 sleepAndExecute는 얼마나 대기할 것인지도 마음대로 정할 수 있고,
어떤 함수를 실행할 것인지도 마음대로 정할 수 있다.
여기서는 printHello와 printBye 함수가 sleepAndExecute 함수의 매개변수(인자)로 사용됐으므로 콜백 함수이다.
이벤트는 "어떤 일이 발생했다"로 받아들여도 된다.
function onCableConnected(){
print("케이블이 연결되었습니다");
};
//케이블이 연결될 때 마다 전달된 onCableConnected가 호출된다고 가정
setOnCableConnected(onCableConnected);
setOnCableConnected로 설정한 함수가, 케이블을 연결할 때 마다 호출되므로
onCableConnected는 "어떤 이벤트에 의해 호출되어지는 함수", 즉 Callback 함수라고 할 수 있다.