我正在使用JQWidgets來創建餅圖。雖然這一切都很好,並且很有魅力。然而,我想要做的是每隔數秒鐘更新一次數據。使用jQuery,這裏是代碼,我到目前爲止有:在jQuery Ajax調用中使用setInterval的最佳方式是什麼?
function loadChart(id,name){
//chart loads here
var speed = 5000,
t = setInterval(reloadData,speed);
function reloadData() {
source.url = 'data.php?id='+id;
var dataAdapter = new $.jqx.dataAdapter(source);
$('#pie').jqxChart({ source: dataAdapter });
console.log('reloading pie...'+globalPieId);
speed = 5000;
clearInterval(t);
t = setInterval(reloadData, speed);
}
}
我的問題是,如果loadChart函數被調用,將創建的setInterval的另一個實例,並經過三分四次,圖表是一個持續的刷新狀態。如何優化我的setInterval調用,以便只調用一個實例?
在此先感謝。
請嘗試使用'setTimeout'代替,並且只有當您從上次調用獲得回調時才添加新的超時。 (你已經這樣做了) – lfxgroove
@lfxgroove擊中了頭部。溝''間隔'並用'超時'代替它,應該只是一些代碼更改,然後你可以擺脫'clearInterval',因爲'超時'照顧它。 – tymeJV
一個很好的解釋:http://reallifejs.com/brainchunks/repeated-events-timeout-or-interval/ –