我遇到了一些我编写的代码问题,这些代码遍历了一系列广告。 渲染函数在一个时间间隔内被调用(可配置,但设置为每50ms以帮助调试)。问题是,当此函数运行太多次时,控制台崩溃。在某些手机上,设备将完全耗尽内存并重新启动,我认为它与此功能有关(如果我将其取出,控制台不会崩溃):
var render = function(){
if(ads.length < 1)
return;
if(!ads[adIndex]){
adIndex = 0;
}
s = ads[adIndex].src;
w = ads[adIndex].width;
$(adContainer).html("<p>ADVERTISEMENT</p><img src = '" + s + "' width = '" + w + "'/>");
adIndex++;
};
我认为这可能是内存泄漏,但我无论如何都不是内存专家。我能做些什么来优化这个功能并防止内存问题?
编辑:我正在调用这样的代码:
setInterval(function(){
render();
}, 50);
广告数组只是一个javascript Image()对象数组。
答案 0 :(得分:0)
我认为问题出在代码之下。
$(adContainer)
您每次都创建了JQuery Object。
var $adContainer = $(adContainer);
var render = function(){
if(ads.length < 1)
return;
if(!ads[adIndex]){
adIndex = 0;
}
s = ads[adIndex].src;
w = ads[adIndex].width;
$adContainer.html("<p>ADVERTISEMENT</p><img src = '" + s + "' width = '" + w + "'/>");
adIndex++;
};
然后我建议像这个循环的情况一样使用setTimeout