停止Javascript代码执行,然后继续执行

停止Javascript代码执行,然后继续执行,javascript,jquery,Javascript,Jquery,有没有办法停止代码执行,然后继续执行?例如,下一个代码将不会运行,直到标志值被更改,然后恢复它 编辑:我有一个启动AJAX请求循环的代码,我需要控制(如果可能的话,使用一个标志)当用户访问浏览器的其他选项卡停止它时,该循环。然后,当用户返回应用程序时,循环将继续 这个问题可以通过setIntervalto AJAX请求和停止它们的标志来解决。但是我认为从success AJAX函数循环AJAX请求更为正确,也就是说,当响应完成时,因为我使用的是MVC模式,在模型中有AJAX函数,调用是从de-v

有没有办法停止代码执行,然后继续执行?例如,下一个代码将不会运行,直到标志值被更改,然后恢复它

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

这个问题可以通过
setInterval
to AJAX请求和停止它们的标志来解决。但是我认为从success AJAX函数循环AJAX请求更为正确,也就是说,当响应完成时,因为我使用的是MVC模式,在模型中有AJAX函数,调用是从de-view完成的。然后,带有
setInterval
的循环将从错误的一侧开始


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

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

在这个场景中,您需要设置
active=true
并调用
myloop()
当您检测到选项卡或窗口再次变为活动状态时,请再次执行。当选项卡变为非活动状态时,请设置
active=false
。当前正在运行的AJAX请求将安全完成;但在手动重新启动循环之前,不会发出进一步的请求。

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

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

在这个场景中,您需要设置
active=true
并调用
myloop()
当您检测到选项卡或窗口再次变为活动状态时,请再次执行。当选项卡变为非活动状态时,请设置
active=false
。当前运行的AJAX请求将安全完成;但在您手动重新启动循环之前,不会发出进一步的请求。

否。除非您专门将其设计为管理其自身状态。除非您我们谈论的是调试,在这里你可以按自己的速度逐步完成你的代码。为了让我们清楚,你想暂停js的执行,对吗?看起来你在寻找一个真正问题的非常糟糕的解决方案。那是什么问题?@vicenrele:听起来你想使用
页面可视性API
。现在看看这个问题:在这种情况下,您可能还需要更新您的问题,以便更清楚地表明您正在寻找一个类似于此的功能,以及您当前希望更新的一些代码实现。由于目前的情况,我认为这不是一个合适的问题和答题。您必须根据您的代码开始一个新问题。但是如果如果你想阻止某个东西执行,你不应该一开始就执行它。这可能是对代码设计的误解。不,除非你专门设计它来管理它自己的状态。除非你谈论的是调试,你可以按自己的速率一步一步地执行代码。为了让我们清楚,你想暂停e js执行,对吗?看起来你在寻找一个真正问题的非常糟糕的解决方案。那是什么问题?@Vicinrele:听起来你在寻找使用
页面Visiblity API
。看看这个SO问题:在这种情况下,你可能还想更新你的问题,以更明显地表明你在寻找类似这样的功能这与您当前的一些代码实现有关,您希望进行更新。就目前的情况而言,我认为这不是一个合适的问答问题。您必须根据自己的代码开始一个新的问题。但是,如果您想停止执行某些内容,您不应该首先执行它。这可能是对co的误解去设计