SCORM 2004 4th Edition 용 javascript API를 만들고 있습니다. SCORM에 대해 모르는 사람들을 위해 기본적으로 eLearning 코스가 LMS (Learning Management System)와 통신하는 데 사용할 수있는 API 표준입니다.SCORM API의 비동기식 Ajax 호출
- 초기화 (인수) (키)
- SetValue는
- GetValue (키, 값)
- 종료 (인수)
- 커밋 (인수) : 이제 API는 다음과 같은 방법을 가지고있다
- GetDiagnostic (인수)
- GetErrorString (인수)
- GetLastError() ,174,
이제 Initialize가 다른 것보다 먼저 호출되어야하며 Terminate가 마지막에 있어야합니다. GetValue/SetValue는 그 사이의 어디에서나 호출 할 수 있습니다. 내가하고있는 일은 Initialize 메서드에있다. 웹 서비스에서 JSON을 얻고 나중에 GetValue/SetValue 메서드를 사용할 때 API에 저장하려고한다. 내가 건너 오는 문제는 jQuery를 통한 AJAX 호출이 비동기 적이므로 JSON이로드되기 전에 Initialize 메서드 호출을 수행 할 수 있다는 것입니다. 그런 식으로, Initialize를 호출 한 후 GetValue를 호출하면 GetValue에서 사용하는 JSON이 아직 없습니다. 예기치 않은 문제가 발생할 수 있습니다. 내 질문은 : GetValue/SetValue 메서드를 호출하기 전에 JSON이로드되도록하려면 어떻게해야합니까? 간단한 대답은 동기식으로 만드는 것이지만, 대부분은 권고하지 않으며, 나를 위해 그렇게하고 싶지 않은 것 같습니다. 그에 관한 코드는 다음과 같습니다.
function GetJSON(){
var success = false;
$.ajaxSetup({async:false}); //should make it synchronous
$.getJSON("http://www.mydomain.com/webservices/scorm.asmx/SCORMInitialize?
learnerID=34&jsoncallback=?",
function(data){
bind(data);
success = true;
}
);
return success;
}
function bind(data){
this.cmi = eval("(" + data.d + ")");
$.ajaxSetup({async:true}); //should make it asynchronous again
}
누구에게 아이디어가 있습니까? 나는 정말로 그것을 바르게 평가할 것이다!