检查Interval是否正在运行,反之亦然

xna*_*tox 9 javascript ajax

所以我有一个基本身份验证的Web应用程序.

当我登录时,设置间隔:

$("#login").click(function(e) { 
var interval = setInterval(function(){myFunction();}, 2000); });
Run Code Online (Sandbox Code Playgroud)

然后,当我退出时,我需要停止间隔:

$("#logout").click(function(e) { 
if(typeof interval !== 'undefined') clearInterval(interval); });
Run Code Online (Sandbox Code Playgroud)

但它不起作用,我认为检查是否存在间隔的方法是错误的...我可以设置间隔,以便在我登录时运行,但是当我点击我的Logout按钮时我需要停止/清除它它不......

PS.我使用间隔每2秒自动检查一次"myFunction",但也许有另一种方法可以在没有间隔的情况下完成此操作?谢谢

jfr*_*d00 20

您的interval变量需要在更高的范围内声明,两个函数都可以使用它.正如您现在所拥有的那样,它是一个局部变量,仅存在于事件处理函数的特定调用中.因此,当调用下一个事件处理程序时,该先前的变量不再存在.您可能还希望防止连续点击登录:

var interval;
$("#login").click(function(e) { 
    if (!interval) {
        interval = setInterval(function(){myFunction();}, 2000); 
    }
});

$("#logout").click(function(e) { 
    clearInterval(interval); 
    interval = null;
});
Run Code Online (Sandbox Code Playgroud)

而且,您无需检查是否interval存在undefined.你可以调用clearInterval()它,clearInterval()并防止你传递它的任何无效参数.