我有一个页面,我想每隔几秒不停地更新一次。
为此,我写了以下内容:
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)
循环中,但是,我就是无法让它工作。
任何人都可以提出任何建议吗?
最佳答案
这实际上看起来不错。但是,如果第一个 Ajax 调用没有在两秒内完成,它将堆栈,这可能(不确定)会导致问题。
超时本身不会叠加,因为您只是在前一个超时结束后才启动一个新超时。
一旦两个 Ajax 请求完成,尝试启动一个新的超时:
$.when($('#topbox').load('/home/blabla'),
$('#leftgraph').load('/home/blabla')
).then(function () {
setTimeout(updateDivContent, 2000);
});
引用: $.when
关于javascript - 在 Jquery 或 Javascript 中调用方法的无限循环的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11049777/