더북(TheBook)

여러 군데 손을 댔다.

우선, 기대식에서 정확한 메시지를 확인할 수 있게 단위 테스트에 메시지를 표출했다. 무엇보다 이 장의 요점에 맞추어 아주 정확하게 Promise를 생성했다.

Promisenew로 생성한다.

생성자에 두 인자가 있는 함수를 인자로 넣는다. 이 함수는 언제라도 호출할 수 있지만, resolvereject라는 의미를 지닌다.

Promise를 어떤 값으로 이루려면 그 값으로 resolve를 호출한다.

Promise를 버리려면 버림 사유로 reject를 호출한다. 보통 Error 객체를 사유로 많이 쓰는데, 이는 스택 추적이 쉽기 때문이다.

done()을 빠뜨리지 말자.

 

승현은 잠시 고개를 갸우뚱하더니 콜백에서 Promise.resolvePromise.reject를 반환하지 말고 아예 처음부터 checkInService.checkIn에서 직접 프라미스를 만들어도 되지 않나 생각한다.


checkIn: function(attendee) {
return new Promise( function checkInPromise(resolve, reject) {
  attendee.checkIn();
  recorder.recordCheckIn(attendee).then(
    function onRecordCheckInSucceeded(checkInNumber) {
      attendee.setCheckInNumber(checkInNumber);
      resolve(checkInNumber);
    },
    function onRecordCheckInFailed(reason) {
      attendee.undoCheckIn();
      reject(reason);
    });
});
}

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