자바스크립트 에서 함수의 특징 중
매개 변수로 전달 할 수 있다는 점을
활용한 함수입니다.
간단하게 다른 함수에 매개변수로 넘겨준 함수를 말합니다.
매개 변수로 넘겨 받은 함수는 일단 넘겨 받고, 때가 되면
나중에 호출(CALL BACK)한다는 것이 콜백 함수의
개념입니다.
콜백함수를 사용하는 이유에는 비동기적 프로그래밍을 사용함으로써
소중한 싱글 스레드의 멈춤을 방지합니다. 즉, 블로킹을 방지하여
싱글 스레드가 논 블록킹으로 동작하게 합니다.
브라우저 화면에서 발생하는 사용자의 이벤트는 예측이 불가능합니다.
따라서 이런 화면이벤트를 관리담당하는 녀석에게 우리는 특정이벤트가 발생할 때 호출을 원하는 내용을 callback 함수에 전달하게 됩니다.
2.네트워크 응답 처리
화면단에서 서버에게 요청을 보냈을 때, 그 응답이 언제 올지 알 수 없습니다.
따라서 이런 서버에 대한 응답처리 등도 비동기적으로 처리해야 합니다.
3.파일을 읽고 쓰는 등의 파일 시스템 작업
4.의도적으로 시간 지연을 사용하는 기능(알람 등)
위와 같이 이벤트 등을 기다리는데 하나뿐인 소중한 스레드를 사용한다면, 또 서버의 응답을 기다리기 위해 하나뿐인 소중한 스레드를 사용한다면 사용자는 멈춰져 있는 화면을 보게되는 것입니다. 위와 같이 스레드의 블록킹을 야기하는 작업은 필수적으로 비동기적 프로그래밍을 해야 한다.
function fn_newCallBack(){
console.log("비동기적으로 호출되고 싶다.");
}
console.log("------- 호출 직전 -------");
setTimeout(fn_newCallBack, 3 * 1000); // 3초 뒤 콜백 호출
console.log("------- 호출 이후 -------")
//----- 호출 직전 -----
//----- 호출이후 -----
//비동기적으로 호출되고 싶다
let i = 0;
const intervalId = setInterval(function(){
if(i === 3) return clearInterval(interbalId);
console.log(`${i++}: 인터벌로 호출 되는 콜백입니다.`);
}
, 5 * 1000);
//0: 인터벌로 호출되는 콜백입니다.
//1: 인터벌로 호출되는 콜백입니다.
//3: 인터벌로 호출되는 콜백입니다.