小编典典

AJAX间隔刷新?

ajax

我正在尝试使AJAX函数更新约30秒。我已经完成了一个简单的版本,下面是代码。

var refInterval = window.setInterval('update()', 30000); // 30 seconds

var update = function() {
    $.ajax({
        type : 'POST',
        url : 'post.php',
        success : function(data){
            $('.voters').html(data);
        },
    });
};

这有效,但是,当该函数被首次调用时,我不希望它等待30秒,我只希望该函数调用,然后等待30秒,再次调用,等待30秒,再次调用,等等。有什么帮助吗?


阅读 260

收藏
2020-07-26

共1个答案

小编典典

考虑setTimeout改用-更可靠。
setInterval当窗口没有焦点时,计时器可以堆叠,然后在再次获得焦点时,所有计时器立即运行。使用setTimeout还会确保如果第一个请求由于某种原因阻塞,则不会导致多个AJAX请求排队。

要立即开始循环,请使用包裹在函数周围的IIFE(“立即调用的函数表达式”):

(function update() {
    $.ajax({
        ...                        // pass existing options
    }).then(function() {           // on completion, restart
       setTimeout(update, 30000);  // function refers to itself
    });
})();                              // automatically invoke for first run

ps请勿将字符串参数用作setIntervalsetTimeout-只需直接传递函数引用即可。

2020-07-26