💡 콜백 함수의 원리를 예제를 통해 공부해보자
자바스크립트에서 자주 사용되는 콜백함수에대해 정리하고 이해해보자.
React나 Firebase등을 사용하면서 콜백함수의 기저개념을 모른채로 사용을 해왔다.
이번 글을 통해 콜백함수를 공부하고자한다.
다른 함수의 매개변수로 전달되어 수행되어지는 함수
콜백 함수를 매개변수로 호출하는 함수는 고차 함수(Higher-order Function)이라고 한다.
💡 콜백 함수는 자바스크립트의 기본 함수와 형태적으로 다르지 않다. 다만, 함수를 작성한 뒤에 특정한 이벤트가 발생했을때 실행시킬 수 있는 기능을 하기 위한 호출 방식이다.
자바스크립트에서 onclick과 같은 이벤트 처리 함수는 콜백 함수이다.
<button id="1" onclick="onBtnClick();">버튼</button>
<script>
function onBtnClick(){
alert("click");
}
</script>
위 코드를 보면 onBtnClick함수는 브라우저의 JS API에서 DOM 이벤트 핸들러에 전달이 된 다음, 해당 버튼에 클릭 이벤트가 발생했을때
이벤트 핸들러가 콜백함수를 호출하게된다.
자바스크립트는 인터프리트언어임으로
동기적
으로 순차적으로 코드를 실행하는데, 콜백 함수를 통해비동기
처리를 할 수 있는 것이다.
비동기
: 싱글스레드가 멈추는 현상을 방지하여 논블로킹으로 네트워크 통신이 중단되지 않고 다른 작업을 수행한다.
네트워크 응답 처리
Front-End에서 Back-End 서버로 요청을 보냈을 때 (ex. API 호출) 응답이 언제 올지 알 수 없으므로 비동기 처리해야한다.
사용자 이벤트 처리
사용자의 이벤트는 예측 불가능하기 때문에 (ex. 버튼 클릭) 이벤트가 발생했을 때 실행될 함수 등을 비동기 처리해야한다.
파일 시스템 작업
의도적으로 지연시키는 기능
기본적인 콜백 함수
// 콜백 함수
function callbackFunc(){
console.log("CallBack Function"); // 4. console.log~
}
// 고차 함수
function higherOrderFunc(){
console.log("Higher-order Function"); // 2. console.log~
callback(); // 3. Callback Function Call
}
// 메인 호출부
higherOrderFunc(callbackFunc); // 1. Main Call
콜백함수로 구현한 계산기
function add(x, y) {
return x + y;
}
function sub(x, y) {
return x - y;
}
function mul(x, y) {
return x * y;
}
function div(x, y) {
return x / y;
}
function calculator(callback, a, b) {
return callback(a, b);
}
console.log(calculator(add, 12, 5)); // 17
console.log(calculator(sub, 12, 5)); // 7
console.log(calculator(mul, 12, 5)); // 60
console.log(calculator(div, 12, 5)); // 2.4
콜백 함수의 주의점과 문제점이 많다. 이를 해결하기위해 async/await
, promise
등의 사양이 추가되었는데
이 내용들은 다른 포스트에서 정리하고자한다.