0
我有一个poll()
功能:如何停止多次执行javascript函数(轮询)?
$("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个实例将循环?
这看起来正是我需要的,但出于某种原因,clearTimeout(a)是无法摧毁的setTimeout对象。 –
@RiMMER也许@Mahan正在考虑'setInverval' /'clearInterval' – McGarnagle
@RiMMER请检查我提的参考 –