Ajax javascript设置间隔不触发

Ajax javascript设置间隔不触发,ajax,setinterval,Ajax,Setinterval,我有一个长时间运行的数据库更新,我想在它发生时报告它。 我把射击的间隔时间定在黄金时段 我已经看到了许多setInterval的问题示例,它看起来很简单,但我无法用这段代码启动它。checkSaveStatus代码返回一个状态报告,该报告告诉您已保存了多少行。一旦我能使基本功能正常工作,我将对其进行增强以显示结果 我开始怀疑这可能与我处理Ajax调用的方式有关 var checkTimer; function checkSaveStatus() { var saveStatus = aj

我有一个长时间运行的数据库更新,我想在它发生时报告它。 我把射击的间隔时间定在黄金时段 我已经看到了许多setInterval的问题示例,它看起来很简单,但我无法用这段代码启动它。checkSaveStatus代码返回一个状态报告,该报告告诉您已保存了多少行。一旦我能使基本功能正常工作,我将对其进行增强以显示结果

我开始怀疑这可能与我处理Ajax调用的方式有关

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
相比,这将是真的,反过来将清除间隔并返回