我正在尝试使 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 秒,再次调用,等等。有什么帮助吗?
最佳答案
考虑使用setTimeout
代替 - 它更可靠。 setInterval
计时器可以在窗口没有焦点时堆叠,然后在窗口再次获得焦点时立即运行。使用 setTimeout
还可以确保在第一个 AJAX 请求由于某种原因阻塞时不会出现多个排队的 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
附:不要对 setInterval
或 setTimeout
使用字符串参数 - 只需直接传递函数引用。
关于jquery - AJAX间隔刷新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24494805/