더북(TheBook)

당장 테스트하면 전부 실패할 테니 XMLHttpRequestcheckInRecorder에 써넣는다(예제 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));
      }
    });
  }
};
};

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