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
    작업 완료

     

    이렇게 콜백 안에 또 콜백을 넣어서 구현할 수 있는데, 너무 여러 번 중첩되니까 코드의 가독성이 나빠졌지요? 이러한 형태의 코드를 ‘콜백 지옥’이라고 부릅니다. 웬만하면 지양해야 할 형태의 코드죠.

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.