ajax 轮询:请求发送的频率高于 setTimeout

Posted

技术标签:

【中文标题】ajax 轮询:请求发送的频率高于 setTimeout【英文标题】:ajax polling: requests sent more frequently than setTimeout 【发布时间】:2014-04-18 18:29:08 【问题描述】:

我有以下 ajax 轮询代码:

function pollStatus(url)
    $.get(url, function(response)
        if (response.uploaded === null)
            setTimeout(pollStatus(url), 5000);
        
    ;

当我查看网络选项卡时,我看到请求几乎每秒发送一次,而不是 settimeout 中指定的 5 秒。我在这里做错了什么?

【问题讨论】:

【参考方案1】:

你的函数被立即调用,因为你必须在timeout中传递一个参数,所以使用匿名函数:

 setTimeout(function() 
     pollStatus(url)
 , 5000);

【讨论】:

以上是关于ajax 轮询:请求发送的频率高于 setTimeout的主要内容,如果未能解决你的问题,请参考以下文章

Ajax 轮询与 SSE(服务器端的性能)

轮询与长轮询

轮询和长轮询

服务器推Comet长轮询的方式与普通AJAX不断请求的方式的区别

轮询和长轮询优缺点分析

flask 轮询