【发布时间】:2012-06-15 11:24:07
【问题描述】:
我想每隔几秒就不停地更新一个页面。
为此,我写了以下内容:
var to;
$(function () {
to = setTimeout(updateDivContent, 2000);
});
function updateDivContent() {
$('#topbox').load('/home/blabla', null);
$('#leftgraph').load('/home/blabla', null, function () {
to = setTimeout(updateDivContent, 2000);
});
};
这行得通,但是,它导致我认为是内存泄漏,因为大约 15 分钟后,计算机几乎死机,浏览器占用了所有可用内存和 CPU。
我猜超时基本上是堆叠,但是,我不知道如何解决这个问题。我已经尝试摆脱第二个超时并将第一个超时放入 while(true) 循环中,但是我无法让它工作。
谁能给点建议?
【问题讨论】:
-
你已经在做的事情对我来说看起来不错 - 你肯定不想要
while(true)或类似的。如果您接听 Ajax.load()呼叫,它还会崩溃吗? (我知道你显然需要它们,但只是为了测试目的......) -
您是否尝试在设置新超时之前使用
clearTimeout清除超时? -
@WickyNilliams - 没有什么需要明确的:在新的设置之前,前一个已经执行。
-
然后忽略我 :) 我想我把
setTimeout/clearTimeout和setInterval/clearInterval混淆了
标签: javascript jquery loops