2012-10-17 58 views
2

目前在我的网页后,停止我有一个运行的功能,每30秒计时器:如何设置的时间间隔,但随后20分钟

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

这工作得很好,但问题是,如果100的用户将他们的浏览器打开(比如说他们去吃午餐时),它会调查我们的系统并无故增加我们服务器上的负载。

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

+1

将函数传递给'setInterval',而不是字符串。 – Quentin

+0

不要使用字符串作为'setInterval'或'setTimeout'的第一个参数 – Andreas

+0

@Quentin字符串有什么问题?现在工作正常吗? – loyalflow

回答

9

20分钟就超时设置为清除间隔:

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

setTimeout(function() { 
    clearInterval(interval); 
}, 1000 * 60 * 20); 
+2

我建议在代码中加入事件监听器,否则代码会在20分钟后停止运行,即使用户正在使用该站点。 –

0

设置你作为一个变量区间。

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

2

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

所以解决的办法是安排另一个关闭,这将防止运行此区间:

var interval = setInterval("someFunction(userId)", 30000); 
setTimeout(function(){ clearInterval(interval) }, 20 * 60 * 1000); 
0

试试这个:

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

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

setInterval返回intervalId,你可以用它来传递稍后再到clearInterval

相关问题