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