ES6 - Promise

marafo·2020년 11월 1일
0

개요

콜백 헬로 인해서 찾기 힘든 에러나 버그를 잡기 위해서 Promise가 도입되었다. Promise를 통한 결과 객체는 클래스처럼 인스턴스로 반환하게 되는데 오직 성공, 실패 두 가지 경우만 있다. 또한 딱 1번만 결과가 실행되며 다른 함수에게 결과를 전달할 수 있다.

기본 문법

function countdown(seconds) {
  return new Promise(function (resolve, reject) {
    for (let i = seconds; i >= 0; i--) {
      setTimeout(function () {
        if(i === 13) return reject(new Error('now = 13ms'));
        if (i > 0) {
          console.log(i + '...');
        } else {
          resolve(console.log('Finish!'));
        }
      }, (seconds - i) * 1000);
    }
  });
}

count(15);

기본적으로 객체를 반환하는 것처럼 작성할 수 있다. 위 코드는 인풋으로 받은 숫자(15)부터 1초간격으로 줄이면서 i를 출력하며 도중에 13일 땐(reject) new Error를 반환한다. 그리고 i = 0이 되면(resolve) 'Finish'를 출력한다.

하지만 성공/실패 중 하나라도 결정되면 동작을 멈춰야 하는데 그렇지 않기 때문에 이 점은 이벤트로 보완이 가능하다.

이벤트

profile
프론트 개발자 준비

0개의 댓글

관련 채용 정보