1초에 걸쳐서 10, 20, 30, 40과 같은 형태로 여러 번 순차적으로 처리하고 싶다면 콜백 함수를 중첩하여 구현할 수 있습니다.
function increase(number, callback) { setTimeout(() => { const result = number + 10; if (callback) { callback(result); } }, 1000); } console.log('작업 시작'); increase(0, result => { console.log(result); increase(result, result => { console.log(result); increase(result, result => { console.log(result); increase(result, result => { console.log(result); console.log('작업 완료'); }); }); }); });
\ 실행 결과 /
작업 시작 Hello World! 10 20 30 40 작업 완료
이렇게 콜백 안에 또 콜백을 넣어서 구현할 수 있는데, 너무 여러 번 중첩되니까 코드의 가독성이 나빠졌지요? 이러한 형태의 코드를 ‘콜백 지옥’이라고 부릅니다. 웬만하면 지양해야 할 형태의 코드죠.