Ajax javascript设置间隔不触发
我有一个长时间运行的数据库更新,我想在它发生时报告它。 我把射击的间隔时间定在黄金时段 我已经看到了许多setInterval的问题示例,它看起来很简单,但我无法用这段代码启动它。checkSaveStatus代码返回一个状态报告,该报告告诉您已保存了多少行。一旦我能使基本功能正常工作,我将对其进行增强以显示结果 我开始怀疑这可能与我处理Ajax调用的方式有关Ajax javascript设置间隔不触发,ajax,setinterval,Ajax,Setinterval,我有一个长时间运行的数据库更新,我想在它发生时报告它。 我把射击的间隔时间定在黄金时段 我已经看到了许多setInterval的问题示例,它看起来很简单,但我无法用这段代码启动它。checkSaveStatus代码返回一个状态报告,该报告告诉您已保存了多少行。一旦我能使基本功能正常工作,我将对其进行增强以显示结果 我开始怀疑这可能与我处理Ajax调用的方式有关 var checkTimer; function checkSaveStatus() { var saveStatus = aj
var checkTimer;
function checkSaveStatus() {
var saveStatus = ajaxCall("WebServices/FLSAService.asmx/CheckFLSASaveStatus");
if (saveStatus == null) {
clearInterval(checkTimer);
return;
}
log('saveStatus: ' + saveStatus.InputCount + '/' + saveStatus.ResultCount + ':' + saveStatus.SaveComplete, 'FLSA');
if (saveStatus.SaveComplete) {
reportSaveComplete = true;
clearInterval(checkTimer);
}
}
checkTimer = window.setInterval(checkSaveStatus, 1000);
... make an asynchronous Ajax call that takes a long time to complete
... the checkSaveStatus code doesn't fire until the Ajax call completes
据我所知,您不能从ajax返回值,因为它是异步的。处理的方式是通过回调。所以这段代码:
var saveStatus = ajaxCall("WebServices/FLSAService.asmx/CheckFLSASaveStatus");
if (saveStatus == null) {
clearInterval(checkTimer);
return;
}
很可能无法正常运行。很难说没有看到ajaxCall
函数,但是您可能没有得到预期的结果。左侧赋值不会反映任何异步的内容。因此,它要么是从ajaxCall
返回的默认值,要么是undefined
,与==null
相比,这将是真的,反过来将清除间隔并返回