在Jquery或Javascript中调用方法的无限循环的正确方法是什么?

wil*_*wil 1 javascript jquery loops

我有一个页面,我想每隔几秒钟不停地更新.

为此,我写了以下内容:

var to;
$(function () {
           to = setTimeout(updateDivContent, 2000);
});

function updateDivContent() {

    $('#topbox').load('/home/blabla', null);


    $('#leftgraph').load('/home/blabla', null, function () {

        to = setTimeout(updateDivContent, 2000);
    });
};
Run Code Online (Sandbox Code Playgroud)

然而,这很有效,它导致我认为是内存泄漏,因为大约15分钟后,计算机几乎冻结了浏览器占用所有可用内存和CPU.

我猜测Timeout基本上是堆叠的,但是,我不知道如何解决这个问题.我已经尝试摆脱第二次超时并将第一次超时放入while(true)循环中,但是,我无法让它工作.

谁能提出任何建议?

Fel*_*ing 9

这看起来很好.但是如果第一个Ajax调用没有在两秒内完成,它将堆叠,这可能(不确定)确定会导致问题.

超时本身不会堆叠,因为只有在上一个完成后才启动新的超时.

两个 Ajax请求完成后尝试启动新的超时:

$.when($('#topbox').load('/home/blabla'),
       $('#leftgraph').load('/home/blabla')
).then(function () {
    setTimeout(updateDivContent, 2000);
});
Run Code Online (Sandbox Code Playgroud)

参考: $.when