我正在做一个我使用的项目setInterval
。我已经阅读了一点,但我无法真正理解它。发生的事情是它工作正常,但大约 20 秒后它开始变得越来越快,直到它落后于我的电脑。
var autorefresh = setInterval(function () {
$('#holder').fadeOut('slow').load('index.php').fadeIn('slow');
}, 5000);
正如我所说,这很好用,直到它开始变得越来越快。
我正在做一个我使用的项目setInterval
。我已经阅读了一点,但我无法真正理解它。发生的事情是它工作正常,但大约 20 秒后它开始变得越来越快,直到它落后于我的电脑。
var autorefresh = setInterval(function () {
$('#holder').fadeOut('slow').load('index.php').fadeIn('slow');
}, 5000);
正如我所说,这很好用,直到它开始变得越来越快。
我不知道您要做什么,但是此代码将增加同时运行的函数的数量,直到如您所说,它变得无法管理。如果一个请求花费的时间超过 5 秒(如果您有许多页面要获取创建高负载,这是可能的),那么您将在任何时候进行多个负载。
编辑:提问者想“每 5 秒刷新一次 div”。
这不起作用的原因是因为刷新不是即时的,它需要时间。但是循环不尊重这一点,并且无论加载需要多长时间都会刷新 5 秒。这意味着在任何时候网络都可以用其中一个 ajax 请求和 来响应,并且您可能会同时运行fadeIn
两个s。fadeIn
为了解决这个问题,我们等到 ajaxload
和ajaxfadeIn
完成后再timeOut
为另一个请求设置 a。
var refresh = function() {
$('#holder').fadeOut('slow').load('index.php').fadeIn("slow",
function(){setTimeout(refresh,5000)});
}
refresh();