0

我正在做一个我使用的项目setInterval。我已经阅读了一点,但我无法真正理解它。发生的事情是它工作正常,但大约 20 秒后它开始变得越来越快,直到它落后于我的电脑。

var autorefresh = setInterval(function () {
    $('#holder').fadeOut('slow').load('index.php').fadeIn('slow');
}, 5000);

正如我所说,这很好用,直到它开始变得越来越快。

4

1 回答 1

7

我不知道您要做什么,但是此代码将增加同时运行的函数的数量,直到如您所说,它变得无法管理。如果一个请求花费的时间超过 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();
于 2013-05-26T09:48:29.977 回答