如何解决如何获得LMS初始化以等待ajax调用?
我正在更新内部LMS,该内部LMS当前在其SCORM API的强制LMSInitialize()函数的ajax调用中使用已弃用的“ async:false”。目前,浏览器在控制台中对其发出警告,但它可以工作。代码基本上如下:
function LMSInitialize() {
// Default LMS values for this item
var params = {
//etc
};
$.ajax({
type: "POST",url: "ajax_initialize.php",data: params,dataType: 'script',async: false,success:function(data) {
//nothing relevant
}
});
return('true');
}
我知道这将很快完全失效,因此我正尝试将其替换为基于Promise的系统。
function ajaxWrapper(resolution,ajaxType,ajaxUrl,ajaxData,ajaxDataType) {
window.top.console.log('promise launched at '+Date.now());
return new Promise(resolve => {
$.ajax({
type: ajaxType,url: ajaxUrl,data: ajaxData,dataType: ajaxDataType,success:function(data) {
resolve(resolution);
}
});
})
}
async function LMSInitialize() {
// Default LMS values for this item
var params = {
//etc
};
var commDelay = await ajaxWrapper(1,"POST","ajax_initialize.php",params,'script');
window.top.console.log('promise fulfilled at '+Date.now());
return('true');
}
用于兑现承诺的控制台日志正在运行(大约需要4秒钟),但是在SCORM课件放弃等待响应并声明连接失败之前没有运行。为什么在容忍同步ajax的延迟时这种延迟被证明是致命的?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。