더북(TheBook)

6.2 프라미스 체이닝

 

샬럿은 뭐든지 빨리 배우는 편이라 승현과 같이 둘러보는 즉시 코드를 파악했다. 덕분에 여태껏 승현의 서브 모니터에 남아있던 예제 6-3 코드에 더 많은 시간을 할애할 수 있었다.

“이렇게 코딩하면…… 줄줄이 체이닝할 수 있겠는데? then의 귀결 콜백마다 자기 앞에 있는 then이 성공할 때만 실행되게 하면 되잖아? 이를테면……” 샬럿이 말한다.


checkInService.checkIn(attendee)
.then(
  function onCheckInResolved(checkInNumber) {
    // 명찰을 인쇄하고 체크인 번호를 반환한다.
    return badgePrintingService.print(checkInNumber);
  });
.then(
  function onBadgePrintResolved(badgeNumber) {
    return doorPrizeEnteringService.enter(attendee, badgeNumber);
  });

“물론 그렇게 할 순 있지만, 그러면 단계마다 두 번째 (버림) 콜백이 필요하지 않을까?” 승현이 반문한다.

“게다가 XMLHttpRequest 객체를 여럿 설정해서 단위 테스트를 해야 할지도 몰라. 여기(http://jasmine.github.io/2.0/ajax.html)를 찾아보니까 request.response 대신 jasmine.Ajax.stubRequest로 미리 손을 쓸 수 있을 것 같아.”

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