[英]How can I stop a javascript function (poll) from being executed multiple times?
我有一个poll()
函数:
$("document").ready(function(){
poll(10);
$("#refresh").click(function(){ poll(10); });
});
function poll(timeout){
return setTimeout(function(){
if (timeout == 10){
timeout = 10000;
}
$.ajax({ url: "/ajax/livedata.php", success: function(data){
$("#result").html(data);
poll(timeout);
}, dataType: "json"});
}, timeout);
}
因此,那里发生了什么:
1)在页面加载时,调用poll()
并开始执行循环。
2)在#refresh
单击上,此时将立即调用poll()
以立即请求新数据。
问题是:每当我单击#refresh
来请求新数据时,都会再次调用poll()
,但是会触发多次(第一次是首次+每次新点击)。 因此,它不是每10秒触发一次,而是每10秒触发一次(取决于我点击#refresh
)。
如何解决此问题,以便每当我单击#refresh
,仅剩下1个实例将循环播放?
首先将您的setTimeout
对象存储到这样的变量中
var a = poll(10);
然后使用此代码在单击刷新时将其停止
clearTimeout(a);
所以会像这样
$("document").ready(function(){
var a = null;
$("#refresh").click(function(){
if(a != null){
clearTimeout(a);
a = null;
}
a = poll(10);
});
});
参考:
http://www.w3schools.com/jsref/met_win_cleartimeout.asp
http://www.w3schools.com/js/tryit.asp?filename=tryjs_timing_stop
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.