任何方法停止代码执行然后恢复它?例如,下一个代码将不会运行,直到更改标志值然后恢复它。
编辑:我有一个启动AJAX请求循环的代码,当用户访问浏览器的其他选项卡以阻止它时,我需要控制(如果可能的话,带有一个标志)。然后,当用户返回应用程序时,循环将恢复。
问题将通过setInterval
来解决AJAX请求和一个停止它们的标志。但是我认为从成功ajax函数执行AJAX请求的循环更为正确,即当响应完成时,因为我使用MVC模式并且在模型中具有ajax函数并且从de视图完成调用。然后,setInterval
的循环将从错误的一侧开始
但是,我认为“setInterval”可以在AJAX中称为函数
答案 0 :(得分:1)
您可以使用多种方法中的任何一种来检测浏览器标签何时变为非活动状态(我喜欢使用JQuery来设置焦点并模糊文档上的事件,但还有其他技术),但我认为您采用的模式#39;重新寻找是"关闭,在完成时设置自己的新超时"而不是setInterval
。
var active = true;
function myloop()
{
if (active)
{
$.ajax(/*...*/).done(function(j)
{
/* do stuff */
window.setTimeout(myloop, interval);
});
}
}
在这种情况下,当您检测到标签或窗口再次变为活动状态时,您需要再次设置active = true
和再次调用myloop()
。选项卡变为非活动状态时,请设置active = false
。当前运行的AJAX请求将安全完成;但在手动重启循环之前,不会再提出任何要求。