我必须继续轮询服务器以获取信息,所以我设置了这个递归函数:
function getStats(){
$.getJSON("Stats", function(statList){
//parse the statList and update page's html
setTimeout(getStats(), 5000);//recalling
});
}
看着wireshark,我看到频率不是每5秒就像它应该的那样! 怎么样?
虽然我们在这里...这个函数是在jquery选项卡中执行的,我喜欢当我更改标签时它只是停止发送请求..如何做到这一点?
答案 0 :(得分:2)
如果您想重复使用,则应使用setInterval
代替setTimeout
setInterval(function () {
$.getJSON("Stats", function (statList) {
//parse the statList and update page's html
});
}, 3000);
的setTimeout();将只执行一次。您调用setTimeout
时也存在问题,即在指定方法时无需使用()
。你的电话应该是
setTimeout(getStats, 5000);
修改强>
function getStats() {
$.getJSON("Stats", function (statList) {
//parse the statList and update page's html
});
}
getStats();
setInterval(getStats, 5000);
答案 1 :(得分:0)
请参阅:
setTimeout(getStats(), 5000);
getStats()
是一项功能,因此您无需应用()
。
您正在使用此方法作为回调函数,因此必须如下:
setTimeout(getStats, 5000);
看到这个:
setTimeout(fn, time_in_ms);
或
setTimeout(function(){
// here you can call your function
}, time_in_ms);