Javascript 如何设置间隔,但在20分钟后停止

Javascript 如何设置间隔,但在20分钟后停止,javascript,jquery,Javascript,Jquery,目前我的网页上有一个计时器,每30秒运行一次功能: setInterval("someFunction(userId)", 30000); 这很好,但问题是如果100%的用户保持浏览器打开(比如说当他们去吃午饭时),它将轮询我们的系统,并毫无理由地增加我们服务器上的负载 如何在20分钟后停止此计时器的运行?只需将超时设置为20分钟即可清除间隔: var interval = setInterval(function() { someFunction(userId); }, 300

目前我的网页上有一个计时器,每30秒运行一次功能:

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分钟后就会停止运行,即使用户正在使用该站点。