다른 함수의 전달인자로 넘겨주는 함수
비동기 처리 방식에 의해 발생할 수 있는 문제들을 바로 콜백함수를 이용하여 해결 할 수 있습니다.
콜백함수를 사용하면 특정 로직이 끝났을 때 원하는 동작을 실행시킬 수 있습니다.
콜백 함수의 동작 방식은 일종의 식당 자리 예약과 같습니다. 식당에 갔는데 자리가 없어서 대기자 명단에 이름을 쓰고 자리가 날 때까지 주변에서 기다립니다. 만약 식당에서 자리가 생기면 전화로 자리가 났다고 연락이 옵니다. 그 전화를 받는 시점이 여기서의 콜백 함수가 호출되는 시점과 같습니다. 손님 입장에서는 자리가 날 때까지 식당에서 기다리지 않고 주변에서 잠깐 쇼핑을 할 수도 있고 아니면 다른 식당 자리를 알아볼 수도 있습니다.
자리가 났을 때만 연락이 오기 때문에 미리 가서 기다릴 필요도 없고, 직접 식당 안에 들어가서 자리가 비어 있는지 확인할 필요도 없습니다. 자리가 준비된 시점, 즉 데이터가 준비된 시점에서만 원하는 동작(자리에 앉는다, 특정 값을 출력한다 등)을 수행할 수 있습니다.
콜백 지옥은 비동기 처리 로직을 위해 콜백 함수를 연속해서 사용할 때 발생하는 문제입니다. 콜백 안에 콜백을 계속 무는 형식으로 코딩을 하면 코드 구조는 가독성도 떨어지고 로직을 변경하기도 어렵습니다. 이러한 코드 구조를 콜백 지옥이라고 합니다.
콜백 지옥을 해결하는 방법에는 Promise나 Async를 이용하는 방법이 있습니다.