异步ajax调用等待完成时Javascript setInterval未触发

异步ajax调用等待完成时Javascript setInterval未触发,javascript,ajax,google-chrome,setinterval,Javascript,Ajax,Google Chrome,Setinterval,环境是asp.net 4.0、C#、Chrome+Chrome调试器 当用户单击一个按钮时,它会触发四个ajax请求。第一个是同步的。第二个和第三个是异步的——它们(希望)并行运行。在第二次和第三次呼叫完成之前,最后一次呼叫无法启动。当所有这些都发生时,我想在第二个和第三个作业上每秒更新一个带有“.”的对话框 我试图通过一个每秒运行一次的ajax调用来实现这一点,并要求Web服务检查会话中记录为对象的状态。我使用setInterval执行定期检查: var checkTimer = setInt

环境是asp.net 4.0、C#、Chrome+Chrome调试器

当用户单击一个按钮时,它会触发四个ajax请求。第一个是同步的。第二个和第三个是异步的——它们(希望)并行运行。在第二次和第三次呼叫完成之前,最后一次呼叫无法启动。当所有这些都发生时,我想在第二个和第三个作业上每秒更新一个带有“.”的对话框

我试图通过一个每秒运行一次的ajax调用来实现这一点,并要求Web服务检查会话中记录为对象的状态。我使用setInterval执行定期检查:

var checkTimer = setInterval(checkProgress, 1000);

function checkProgress() {
    var progress = ajaxCall("WebServices/FLSAService.asmx/CheckFLSASaveStatus");

    if (progress.job1.complete && progress.job2.complete) {
        clearInterval(checkTimer);
)
不幸的是,有两个问题:

1) 除非我在chrome调试器中设置了一个断点,否则ajax调用在作业1和作业2都完成之前不会发生。然后它就可以启动了,但是checkProgress不会被启动
2) 如果我在Chrome中运行时没有断点,diaglog框将一直隐藏,直到第二个和第三个作业都完成。

您能将此代码放在其余代码的上下文中吗?它的结构是怎样的?从这里的情况来看,我看不出有什么问题。什么是
ajaxCall
,它可能是异步的,因此您的计时器将永远不会被清除,因为
progress
将位于
undefined
位置,您不需要另一个ajax调用来检查其他两个是否完成,只要在调用每个依赖的ajax回调时设置一些标志即可。我们需要查看
ajaxCall()
函数的代码。如果它是同步的,那么当它等待完成时,其他任何东西都不会运行,这是正确的。如果它是异步的,那么它将立即返回。老实说,我会设置一个两个ajax调用都可以看到的标志,然后在完成方法中检查标志是否设置,如果没有设置为true,则调用启动第四个ajax调用的方法。