4

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

setInterval("someFunction(userId)", 30000);   

这很好用,但问题是如果有 100 名用户打开他们的浏览器(比如他们去吃午饭时),它将无缘无故地轮询我们的系统并增加我们服务器上的负载。

如何在 20 分钟后停止此计时器的运行?

4

4 回答 4

13

只需将超时设置为 20 分钟即可清除间隔:

var interval = setInterval(function() {
    someFunction(userId);
}, 30000);

setTimeout(function() {
    clearInterval(interval);
}, 1000 * 60 * 20);
于 2012-10-17T16:12:47.400 回答
2

当您调用 时setInterval,您会得到一个返回值,它是运行间隔的句柄。

所以解决方案是安排另一个关闭,这将阻止这个间隔运行:

var interval = setInterval("someFunction(userId)", 30000);  
setTimeout(function(){ clearInterval(interval) }, 20 * 60 * 1000);
于 2012-10-17T16:14:12.500 回答
0

将间隔设置为变量。

设置另一个计时器以重置该间隔,或在 20 分钟后为您的轮询脚本设置禁用标志。

于 2012-10-17T16:14:07.523 回答
0

试试这个:

var intervalId= setInterval(function(){
   someFunction(userId);
 }, 30000); 

setTimeout(function(){
   clearInterval(intervalId);
},20*60*1000);

setInterval返回一个可以用于clearInterval稍后传递的 intervalId。

于 2012-10-17T16:14:14.390 回答