【发布时间】:2013-09-25 02:07:22
【问题描述】:
我正在使用JQWidgets 创建一个饼图。虽然这一切都很好,花花公子,而且像魅力一样工作。然而,我想做的是每 x 秒更新一次数据。使用 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 一针见血。放弃
interval并用timeout替换它,应该只需要更改一些代码,然后你就可以摆脱clearInterval,因为timeout会处理它。
标签: javascript jquery ajax setinterval