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請檢查我提的參考 –