Ajax请求似乎不尊重计时器

时间:2014-03-28 10:08:23

标签: jquery ajax

我必须继续轮询服务器以获取信息,所以我设置了这个递归函数:

function getStats(){ 
 $.getJSON("Stats", function(statList){
            //parse the statList and update page's html

            setTimeout(getStats(), 5000);//recalling
 });
}

看着wireshark,我看到频率不是每5秒就像它应该的那样! 怎么样?

虽然我们在这里...这个函数是在jquery选项卡中执行的,我喜欢当我更改标签时它只是停止发送请求..如何做到这一点?

2 个答案:

答案 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);