setInterval JavaScript不起作用

时间:2013-05-26 09:46:04

标签: javascript jquery

我正在开展一个使用setInterval的项目。我已经阅读了一点,但我无法理解它。它会发生什么变得很好,但是大约20秒后它开始变得越来越快,直到它落后于我的电脑。

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

正如我所说,这种方法很好,直到它逐渐变得越来越快。

1 个答案:

答案 0 :(得分:7)

我不知道你要做什么,但是这段代码会做的是增加并发运行的函数的数量,直到你说它变得无法管理。如果请求超过5秒(如果您有许多页面获取创建高负载,则可以执行此操作),那么您将在任何时间进行多个加载。

编辑:提问者想“每隔5秒刷新一次div”。

这不起作用的原因是因为刷新不是瞬间的,需要时间。但是无论负载需要多长时间,循环都不会尊重并且不会刷新5秒。这意味着网络可以随时响应其中一个ajax请求和fadeIn,并且您可能会同时运行两个fadeIn

要解决此问题,我们会等到ajax loadfadeIn完成后再为另一个请求设置timeOut

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