使用setInterval的Ajax Heartbeat,同时防止多个调用

Luk*_*uke 5 ajax jquery delayed-execution heartbeat

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

我在其他帖子上看到,可以使用它来setInterval()调用每隔X毫秒执行调用的方法.

但是,如果我的AJAX调用超过10秒钟会发生什么?我仍然希望它完成最后一个请求,并且我不希望在已经有一个正在进行的情况下发起另一个呼叫.这可能导致相同的信息被放置到页面两次!

实现此方法的方法是什么,等待原始AJAX调用完成,而不是简单地"每10秒",原始的AJAX调用可能尚未完成.

blu*_*oft 8

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

function poll() {
    setTimeout( function() {
        $.ajax(.......).success( function(data) {
            poll();  //call your function again after successfully calling the first time.
        });
    }, 10000);
}
Run Code Online (Sandbox Code Playgroud)


SLa*_*aks 6

而不是使用setInterval,调用setTimeout()AJAX完成回调以在前一个完成后10秒启动每个调用.