问题描述
我正在更新内部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 (将#修改为@)