Javascript SCORM API提交-异步还是同步?
我们目前在实施SCORM LMS系统时面临一个设计问题。例如,API定义了一个函数LMSCommit,该函数必须返回“true”或“false”。在该方法中,我们的LMS必须使用参数中包含成功或失败消息的回调函数对服务器端服务进行异步调用。 我们声称,这根本不可能!然而,我们认为有必要询问一些专业人士,我们是否遗漏了一些东西 SCO(对我们没有影响)调用如下方法:Javascript SCORM API提交-异步还是同步?,javascript,scorm,Javascript,Scorm,我们目前在实施SCORM LMS系统时面临一个设计问题。例如,API定义了一个函数LMSCommit,该函数必须返回“true”或“false”。在该方法中,我们的LMS必须使用参数中包含成功或失败消息的回调函数对服务器端服务进行异步调用。 我们声称,这根本不可能!然而,我们认为有必要询问一些专业人士,我们是否遗漏了一些东西 SCO(对我们没有影响)调用如下方法: var result = LMSCommit(''); function LMSCommit(useless) { callO
var result = LMSCommit('');
function LMSCommit(useless) {
callOurServiceFunction(function(Status) {
// what am I supposed to do here in order to put status into
// the return value of the outer function???
}
// fake true as the callourServiceFunction returned immediatly,
// no idea how I can use Status to create a return value
return 'true';
}
我们的LMS(对我们的影响)我们实现了如下内容:
var result = LMSCommit('');
function LMSCommit(useless) {
callOurServiceFunction(function(Status) {
// what am I supposed to do here in order to put status into
// the return value of the outer function???
}
// fake true as the callourServiceFunction returned immediatly,
// no idea how I can use Status to create a return value
return 'true';
}
我们是缺少一些花哨的技巧,还是SCORM标准只是“有争议的”?它通常使用异步代码实现,返回一个毫无价值的“true”值。SCORM课程开发人员非常熟悉这一点,他们已经学会了在任何重要的事情上都不依赖提交返回值。在本例中,所有返回值都意味着触发了ajax请求 如果使用同步方法实现提交,则在等待返回值时,课程将出现延迟和暂停,这将导致大量投诉和声称SCORM引擎损坏 对你这样的人来说很沮丧,但不幸的是,你对此无能为力 对于那些不太熟悉SCORM的人来说,有一点背景知识: SCORM是规范的汇编,而不是真正的标准,它的最后一次重大更新是在2004年。(从那以后的更新都很小,没有重大的架构变化。)这意味着它已经有十年的历史了。SCORM 1.2甚至更老。ADL已经宣布他们不会再更新SCORM了——正如他们所说,盖子已经关闭了 从长远来看,上一次主要的SCORM更新发布时,IE6是主流浏览器,Google Chrome和iPhone不存在,Yahoo和RealPlayer是相关的,Facebook是一个宿舍项目,每个人都认为Adobe Flex和RIA是未来的发展方向。现在是一个不同的世界。。。如果他们重新开始,我相信他们会走另一条路。这就是xAPI(又名锡罐)的作用;它使用不同的通信模型(RESTfulAPI),可以用来替换支持xAPI的LMS中的SCORM。(注意xAPI还没有得到广泛支持。) xAPI链接,如果有人对此感兴趣:
Mark看起来像是“SCO”假设您的函数是同步的,尽管它不是。有没有可能更改代码?为什么必须进行异步调用?因为用于与后端服务器协作的API只支持异步调用…如果您遇到SCORM问题,并且从@pipwerks得到答案,请使用它。他是JS SCORM的人!