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