Javascript 如何设置间隔,但在20分钟后停止
目前我的网页上有一个计时器,每30秒运行一次功能:Javascript 如何设置间隔,但在20分钟后停止,javascript,jquery,Javascript,Jquery,目前我的网页上有一个计时器,每30秒运行一次功能: setInterval("someFunction(userId)", 30000); 这很好,但问题是如果100%的用户保持浏览器打开(比如说当他们去吃午饭时),它将轮询我们的系统,并毫无理由地增加我们服务器上的负载 如何在20分钟后停止此计时器的运行?只需将超时设置为20分钟即可清除间隔: var interval = setInterval(function() { someFunction(userId); }, 300
setInterval("someFunction(userId)", 30000);
这很好,但问题是如果100%的用户保持浏览器打开(比如说当他们去吃午饭时),它将轮询我们的系统,并毫无理由地增加我们服务器上的负载
如何在20分钟后停止此计时器的运行?只需将超时设置为20分钟即可清除间隔:
var interval = setInterval(function() {
someFunction(userId);
}, 30000);
setTimeout(function() {
clearInterval(interval);
}, 1000 * 60 * 20);
将间隔设置为变量
设置另一个计时器以重置该间隔,或在20分钟后为轮询脚本设置禁用标志。当调用
setInterval
时,返回的值是运行间隔的句柄
因此,解决方案是安排另一次关闭,这将阻止该间隔运行:
var interval = setInterval("someFunction(userId)", 30000);
setTimeout(function(){ clearInterval(interval) }, 20 * 60 * 1000);
试试这个:
var intervalId= setInterval(function(){
someFunction(userId);
}, 30000);
setTimeout(function(){
clearInterval(intervalId);
},20*60*1000);
setInterval
返回一个intervalId,您可以稍后使用它传递给clearInterval
。将函数传递给setInterval
,而不是字符串。不要将字符串用作setInterval
或setTimeout
@Quentin的第一个参数。字符串有什么问题?它现在工作正常了?@user1361315在JavaScript中使用eval
是一种不好的做法。请看,我建议在代码中加入事件侦听器,因为否则代码在20分钟后就会停止运行,即使用户正在使用该站点。