Languages/Javascript

[Javascript] 콜백(Callback) 함수란?

MoonSta 2022. 12. 4. 00:02

콜백(Callback) 함수란?

콜백(Callback) 함수란 특정 함수가 실행이 되고 난 후 그 이후에 실행될 함수를 의미합니다. Javascript에서의 함수는 객체(Object)입니다. 따라서 함수가 다른 함수의 인자 또는 반환될 수 있습니다. 그중 인자로 전달된 함수를 콜백(Callback) 함수라고 합니다.

 

 


콜백(Callback) 함수는 언제 사용할까?

Javascript는 이벤트 중심의 싱글 스레드 언어이기 때문에 이벤트 하나가 실행된 후 기다리지 않고 다음 이벤트가 실행됩니다.  예제 하나를 확인해보겠습니다. 

 

function A(){
  console.log("A");
}
function B(){
  console.log("B");
}
A();
B();

//결과
A
B

 

 위의 코드를 보면 A함수가 실행되고, 그다음 B의 함수가 실행됩니다. 이런 방식에서는 콜백(Callback) 함수가 필요가 없을 것이다. 하지만 A의 응답이 오래 걸린다면 어떻게 될 것인가? Javascript의 타이머 함수를 사용하여 확인해보겠습니다. 

 

function A(){
  setTimeout( function(){
    console.log("A");
  }, 500 );
}
function B(){
  console.log("B");
}
A();
B();

//결과 
B
A

 

 이번에는 결과가 다르게 나오게 됩니다. 그 이유는 A 함수가 호출된 후 0.5초의 딜레이 후 실행이 됩니다. 하지만 A가 호출된 후 B가 바로 호출되고 즉시 실행이 되기 때문에 위와 같은 결과를 갖게 됩니다. 0.5의 딜레이를 비동기 통신 사용 시에 서버와의 통신 시간이라고 가정한다면, 응답이 끝나고 작동해야 할 함수가 있다면, 그것이 콜백(Callback) 함수입니다.


 

콜백(Callback) 함수 예제

 

function deriveTime(name, Callback) {
  alert(`${name} Starting derive`);
  Callback();
}
function endDerive(){
  alert("end");
}
deriveTime('Tom', endDerive);

//결과
//Tom Starting derive
//end

 

여기에서 콜백(Callback) 함수는 endDerive 함수이다. deriveTime함수가 실행 되고, 운전자의 이름과 콜백(Callback) 함수를 인자로 넘긴다. 그렇게 되면, deriveTime 함수가 실행이 된 후 콜백(Callback) 함수가 실행 된다. 

'Languages > Javascript' 카테고리의 다른 글

[Javascript]재귀 함수(Recursion Function)  (7) 2023.01.06
[Javascript] Promise란?  (4) 2023.01.01
[Javascript] Fetch API  (8) 2023.01.01
[Javascript] var를 사용하지 않는 이유  (7) 2022.12.29
[Javascript]querySelector 사용법  (3) 2022.12.21