콜백 함수란?

함수를 파라미터로 만들어 전달하는 경우는 대부분 비동기 프로그래밍 방식으로 코드를 만들 때입니다. 예를 들어 더하기 함수를 실행한 후 결과 값이 반환될 때까지 기다리지 않고 그 다음 코드를 실행하려면 비동기 방식으로 코드를 만들어야 합니다. 즉, 더하기 함수를 실행하는 데 시간이 걸릴 수 있기 때문에 그다음 코드를 바로 실행합니다. 그리고 나서 연산이 끝났을 때 파라미터로 전달한 함수가 실행될 수 있다면 그 시점에 결과를 처리할 수 있으므로 효율적인 프로그램을 만들 수 있습니다. 이때 파라미터로 전달되는 함수를 콜백 함수(Callback Function)이라고 합니다. 콜백 함수는 함수가 실행되는 중간에 호출되어 상태 정보를 전달하거나 결과 값을 처리하는 데 사용됩니다.


콜백 함수 예시 코드

function add(a, b, callback){
var result = a + b;
callback(result);
}

add(10, 10, function(result){
console.log('파라미터로 전달된 콜백 함수 호출');
console.log('더하기 (10, 10)의 결과 : %d', result);
});

더하기 함수를 정의할 때는 더 이상 값을 반환하지 않도록 return 키워드를 사용하는 코드 부분을 삭제합니다. 그 대신 더하기 연산을 한 결과 값은 파라미터로 전달된 콜백 함수를 호출하면서 그 콜백 함수로 전달합니다. 콜백 함수는 미리 변수에 할당해 두었다가 add() 함수를 호출할 때 파라미터로 전달할 수도 있지만, add() 함수를 호출할 때 익명 함수로 만들어서 파라미터로 바로 전달할 수도 있습니다. 콜백 함수는 더하기 연산을 하는 코드 아래에서 호출되는데 이때 콘솔에 메시지를 출력합니다.


함수 안에서 값을 반환할 때 새로운 함수를 만들어 반환하는 방법 예시 코드

function multiply(a, b, callback){
var result = a*b;
callback(result);

var history = function(){
return a + '*' + b + '=' + result
}

return history
}

var multi_history = multiply(10, 10, function(result){
console.log(result);
});

console.log('결과 값으로 받은 함수 실행 결과 : ' + multi_history());

> 100

> 결과 값으로 받은 함수 실행 결과 : 10*10=100


References 

  • Do it! Node.js 프로그래밍


+ Recent posts