一尘不染

如何在JavaScript中停止window.setInterval?

javascript

我有一个每2000毫秒调用一次的javascript函数。我想停止此操作,以便我可以让用户在页面上执行其他操作,而无需再次调用它。这可能吗?这是每2000ms调用一次的函数:

window.setInterval(function getScreen (sid) {
        if (window.XMLHttpRequest)
        {// code for IE7+, Firefox, Chrome, Opera, Safari
          xmlhttp=new XMLHttpRequest();
        }
        else
        {// code for IE6, IE5
          xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange=function()
        {
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
          {
            document.getElementById("refresh").innerHTML=xmlhttp.responseText;
          }
        }
        xmlhttp.open("POST","getScreen.php?sid="+<?php echo $sid; ?>,true);
        xmlhttp.send();
    },2000);

阅读 413

收藏
2020-05-01

共1个答案

一尘不染

没有内置的“暂停”功能,但是您可以停止它,然后使用相同的功能开始一个新的间隔。

首先,您需要捕获调用所返回的ID setInterval

let intervalId = window.setInterval(...);

然后,当您要停止它时,请致电

 window.clearInterval(intervalId);

在您的情况下,建议您自己定义setScreen,而不是在的内部进行定义setInterval。这样,您可以intervalId = window.setInterval(setScreen, 2000)在需要恢复时使用它。

2020-05-01