目前在我的网页上,我有一个每30秒运行一次功能的计时器:
setInterval("someFunction(userId)", 30000);
这很好用,但问题是如果百分之百的用户打开浏览器(例如他们去吃午餐时),它会轮询我们的系统并无缘无故地增加我们服务器的负载。
如何在20分钟后停止此计时器的运行?
答案 0 :(得分:11)
设置超时20分钟以清除间隔:
var interval = setInterval(function() {
someFunction(userId);
}, 30000);
setTimeout(function() {
clearInterval(interval);
}, 1000 * 60 * 20);
答案 1 :(得分:2)
当您致电setInterval
时,您会收到一个返回值,该值是运行间隔的句柄。
因此,解决方案是安排另一个关闭,这将阻止此间隔运行:
var interval = setInterval("someFunction(userId)", 30000);
setTimeout(function(){ clearInterval(interval) }, 20 * 60 * 1000);
答案 2 :(得分:0)
将您的间隔设置为变量。
设置另一个计时器以重置该间隔,或者在20分钟后为您的轮询脚本设置禁用标志。
答案 3 :(得分:0)
试试这个:
var intervalId= setInterval(function(){
someFunction(userId);
}, 30000);
setTimeout(function(){
clearInterval(intervalId);
},20*60*1000);
setInterval
会返回您可以稍后传递给clearInterval
的intervalId。