1

有什么方法可以停止代码执行然后恢复它?例如,下一个代码将不会运行,直到更改标志值然后恢复它。

编辑:我有一个启动 AJAX 请求循环的代码,当用户访问浏览器的其他选项卡以停止它时,我需要控制(如果可能,使用标志)循环。然后,当用户返回应用程序时,循环将继续。

该问题将通过setIntervalAJAX 请求和阻止它们的标志来解决。但我认为从成功 ajax 函数执行 AJAX 请求循环更正确,即在响应完成时,因为我使用 MVC 模式并且在模型中有 ajax 函数并且调用是从视图中完成的. 然后,循环setInterval会从错误的一侧开始

但是,我认为“setInterval”可能在 AJAX 调用函数中

4

1 回答 1

1

您可以使用多种方法中的任何一种来检测浏览器选项卡何时变为非活动状态(我喜欢使用 JQuery 在文档上设置焦点和模糊事件,但还有其他技术),但我认为您正在寻找的模式是“在完成时设置自己的新超时的闭包”而不是setInterval.

var active = true;
function myloop()
{
    if (active)
    {
        $.ajax(/*...*/).done(function(j)
        {
            /* do stuff */ 
            window.setTimeout(myloop, interval);
        });
    }
}

在这种情况下,当您检测到选项卡或窗口再次变为活动状态时,您需要再次设置active = true 调用。myloop()When the tab becomes inactive, set active = false. 当前运行的 AJAX 请求将安全完成;但是在您手动重新启动循环之前不会发出进一步的请求。

于 2013-01-10T19:08:49.600 回答