당장 테스트하면 전부 실패할 테니 XMLHttpRequest를 checkInRecorder에 써넣는다(예제 6-8).
예제 6-8 HTTP 있는 checkInRecorder 구현부
소스 파일 6장\Promises\checkInRecorder.js
var Conference = Conference | | {}; Conference.checkInRecorder = function() { ‘use strict’; var messages = { mustBeCheckedIn: ‘참가자는 체크인된 것으로 표시되어야 한다.’, httpFailure: ‘HTTP 요청 실패!’ }; return { getMessages: function() { return messages; }, recordCheckIn: function(attendee) { return new Promise( function(resolve, reject) { if (attendee.isCheckedIn()) { // *** 3 *** var xhr = new XMLHttpRequest(); xhr.onreadystatechange=function onreadystatechange() { if (xhr.readyState == 4) { if (xhr.status == 200) { // *** 7 *** resolve(xhr.responseText); } else { reject(new Error(messages.httpFailure)); } } }; xhr.open(“POST”,”/checkin/” + attendee.getId(),true); xhr.send(); } else { reject(new Error(messages.mustBeCheckedIn)); } }); } }; };