[英]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.