작성
·
675
답변 2
2
콜백 함수는, 지연되어 되돌와 불려지는 방식으로 실행되는 함수입니다.
콜백 함수라는 타입이 존재하는 것은 아니고, 어떤 함수를 콜백 함수로서 사용하는 것입니다.
델리게이트나 람다함수 등을 사용하면 함수를 변수에 저장하고 다른 함수에 입력할 수 있습니다. 다른 말로 하면, A라는 함수를 변수에 저장한 다음, B라는 함수의 입력으로 넣고선, "B의 처리가 다 끝나는 타이밍에 A를 실행해달라고 부탁하는" 방식으로 코드를 구현할 수 있습니다.
예를 들어 다음과 같은 처리가 있다고 생각해 봅시다.
action someFunction = A; //someFunction 이라는 변수로 A 함수를 저장
B(A); // A를 입력으로 주면서 B 함수를 실행
그리고 B는 다음과 같이 구현되어 있습니다.
void B(action callBack) {
// 시간이 다소 걸리는 B의 주요한 처리들...
// B의 대부분의 처리가 모두 끝났을때...
// 맨 마지막 라인에서 입력으로 받은 함수를 실행시켜줌
callBack();
}
위와 같이 하면, B함수가 끝나는 타이밍에 맞춰 A를 실행하는, 연쇄 작용을 구현할 수 있습니다.
즉, 콜백 함수의 콜백-"되돌아 부르다"라는 것은, 콜백 함수를 받아 실행하는 측이 마치 우리들에게 되돌아와서는 자신의 실행이 모두 끝난 타이밍을 알려주는 것과 유사하게 보이기 때문입니다.
0