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로 미리 손을 쓸 수 있을 것 같아.”