一尘不染

使用setInterval的Ajax Heartbeat,防止同时进行多个呼叫

ajax

我希望在后台使用jQuery作为“心跳”进行AJAX调用,以便我的Web应用程序可以检查新数据。例如,每10秒。

我在其他帖子上看到,可以使用setInterval()调用每X毫秒进行一次调用的方法。

但是,如果我的AJAX通话时间超过10秒怎么办?我仍然希望它完成上一个请求,并且当正在进行中的一个请求时,我不希望发出另一个呼叫。这可能导致相同的信息两次被放置到页面上!

当我的方法等待原始AJAX调用完成时,而不是仅“每10秒”完成时,该方法的实现方式是什么?


阅读 274

收藏
2020-07-26

共1个答案

一尘不染

尝试从您的ajax成功函数设置另一个超时:

function poll() {
    setTimeout( function() {
        $.ajax(.......).success( function(data) {
            poll();  //call your function again after successfully calling the first time.
        });
    }, 10000);
}
2020-07-26