Callback Design

콜백은 호출 시점과 중첩 깊이를 같이 설계한다

같은 함수 전달이라도 즉시 실행되는 배열 콜백과 나중에 실행되는 이벤트 콜백은 위험 지점이 다릅니다.

Synchronous

호출 흐름 안에서 바로 끝난다

map, filter, reduce는 현재 스택에서 콜백을 실행하므로 반환값과 예외 흐름을 바로 추적한다.

Asynchronous

작업 완료 후 큐에서 다시 들어온다

타이머, 네트워크, 이벤트는 나중에 호출되므로 상태 보존과 정리 책임을 명확히 둔다.

1. 인자로 전달무엇을 위임할지 결정
2. 실행 시점 확인즉시 실행인지 나중인지 분리
3. 중첩 깊이 점검의존 단계가 늘면 Promise 고려
4. 해제 책임 기록리스너와 타이머는 제거 경로 확보

콜백 헬

단계 의존성이 깊어지면 실패 처리와 재시도가 흩어진다.

상태 캡처

나중에 실행되는 함수가 오래된 값을 기억할 수 있다.

정리 누락

반복 타이머와 이벤트 리스너는 종료 조건이 없으면 계속 남는다.

콜백을 쓸 때는 함수형 추상화인지, 비동기 완료 알림인지 먼저 구분하면 코드 구조가 훨씬 단순해집니다.