2013-05-26 30 views
0

我正在使用setInterval的项目。我已经读了一点,但我真的不明白。会发生什么呢,它工作正常,但大约20秒后,它开始变得越来越快,直到它滞后我的电脑。setInterval JavaScript不起作用

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

正如我所说,这工作正常,直到它开始变得越来越快。

+0

你知道'load'没有放在'fx'队列中,而是立即执行吗? – Bergi

回答

7

我不知道你在做什么,但是这段代码会做的事情是增加同时运行的函数的数量,直到如你所说的那样,它变得难以管理。如果一个请求的时间超过5秒(如果你有很多页面获取创建高负载,这是可能的),那么随时可以有多个负载正在进行。

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

这是不工作的原因是因为刷新不是即时的,它需要时间。但是,无论负载需要多长时间,循环都不会重复并刷新5秒。这意味着网络在任何时候都可能会响应一个ajax请求和fadeIn,您可能会同时运行两个fadeIn s。

为了解决这个问题,我们等到ajax loadfadeIn已经完成,然后再为另一个请求设置timeOut

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

好的,我该如何解决这个问题? – user1926053

+0

你想做什么? – Joe

+0

你可以给我们一些背景知道你想用这段代码先完成什么? – alexpls