我正在开发一个仪表板项目,其中需要每 5 秒左右通过 AJAX 源更新多个小部件(如十几个)。我目前正在使用setTimeout
排队小部件更新,每次实际更新小部件时都会调用它(从技术上讲不是递归,但是......)。这就是代码的样子
var update;
(update = function() {
$.get(source, function() {
// Do something
setTimeout(update, 5000);
});
})();
在页面运行几个小时后(Chromium 21),它可以轻松 OOM 我的 8GB RAM。由于客户端在非常小的配置(< 1GB RAM)上使用 IE6,因此问题更加重要。
我怎样才能避免这种怪癖?