Я использую JQWidgets, чтобы создать круговую диаграмму. И в то время как все это прекрасно и денди и работает как шарм. Однако я хотел бы обновить данные каждые x секунд. Использование JQuery, вот код, который я до сих пор:Каков оптимальный способ использования setInterval в jQuery jQuery?
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 ударил ноготь по голове. Отбросьте, что 'interval' и замените его на« timeout », должно быть только несколько изменений кода, и тогда вы можете избавиться от этого' clearInterval', так как 'timeout' позаботится об этом. – tymeJV
Прекрасное объяснение: http://reallifejs.com/brainchunks/repeated-events-timeout-or-interval/ –