14.1.2 Promise

    Promise는 콜백 지옥 같은 코드가 형성되지 않게 하는 방안으로 ES6에 도입된 기능입니다. 앞에서 본 코드를 Promise를 사용하여 구현해 볼까요? 다음 예제를 확인해 봅시다.

    function increase(number) {
    const promise = new Promise((resolve, reject) => {
      // resolve 성공, reject 실패
      setTimeout(() => {
        const result = number + 10;
        if (result > 50) {
          // 50보다 높으면 에러 발생시키기
          const e = new Error('NumberTooBig');
          return reject(e);
        }
        resolve(result); // number 값에 +10  성공 처리
      }, 1000);
    });
    return promise;
    }
     
    increase(0)
    .then(number => {
      // Promise에서 resolve 값은 .then 통해 받아   있음
      console.log(number);
      return increase(number); // Promise 리턴하면
    })
    .then(number => {
      //  .then으로 처리 가능
      console.log(number);
      return increase(number);
    })
    .then(number => {
      console.log(number);
      return increase(number);
    })
    .then(number => {
      console.log(number);
      return increase(number);
    })
    .then(number => {
      console.log(number);
      return increase(number);
    })
    .catch(e => {
      // 도중에 에러가 발생한다면 .catch 통해   있음
      console.log(e);
    });

    여러 작업을 연달아 처리한다고 해서 함수를 여러 번 감싸는 것이 아니라 .then을 사용하여 그다음 작업을 설정하기 때문에 콜백 지옥이 형성되지 않습니다.

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