'매개변수로 함수를 넘겨받은 상태로, 때가 되면 나중에 호출(called back)한다.'
콜백 함수는 함수의 매개변수로 들어가는 함수이다. 즉 어떤 이벤트에 의해 호출되어지는 함수이다.
function aaa(qqq){
qqq()
}
aaa(function(){
console.log("test")
})
비동기 작업을 동기적으로 사용하고 싶을때 사용. (asnyc await가 없었을 때)
setTimeout(()=>{},5000) 5초뒤에 함수를 실행시켜줘
콜백함수를 설명할 때에는 변수의 유효범위(scope)에 대한 이야기, 동기/비동기(synchronous/Asynchronous)처리에 대한 이야기도 하면 좋을 것 같다.
콜백함수는 때로는 가독성이나 코드 재사용 면에서도 사용 된다.
비동기 방식으로 작성된 함수를 동기 처리하기 위해 필요 하다.
function findUserAndCallBack(id, cb) {
const user = {
id: id,
name: "User" + id,
email: id + "@test.com",
};
cb(user);
}
findUserAndCallBack(1, function (user) {
console.log("user:", user);
});
=> 콜백 함수를 넣음에 따라 함수 내부에서 수행해주 때문에 결과값을 return 할 필요가 없다
function findUserAndCallBack(id, cb) {
setTimeout(function () {
console.log("waited 0.1 sec.");
const user = {
id: id,
name: "User" + id,
email: id + "@test.com",
};
cb(user);
}, 100);
}
findUserAndCallBack(1, function (user) {
console.log("user:", user);
});
결과
waited 0.1 sec.
user: {id: 1, name: "User1", email: "1@test.com"}
예제는 결과값을 바로 리턴받지 않고, 그 결과값을 통해 처리할 로직을 콜백 함수로 넘겨서 제대로 구현을 하였다.