我需要连接数百个像这样的Javascript字符串:
var result = '';
for (var i = 0; i < 300; i ++ ) {
result += DATA[i] + 'Some Dynamic Text';
}DATA[i]是相当大的(比如300‘s或更多,它代表的是图像的base64 )。
当我执行这段代码时,浏览器会弹出一个内存溢出错误(断点是result += DATA[i])
如何优化这些代码以避免此类内存问题?
====编辑====
我之前没有说清楚,所以您可以认为DATA[i]相当大,而我不能更改它。每一个连接都会附加一些动态文本。
发布于 2013-08-12 10:46:15
可以使用try {} catch进行调试。
var result = '';
for (var i = 0; i < 300; i ++ ) {
try {
result += DATA[i];
}
catch ( e ) {
console.log('An error occured on DATA[' + i + ']');
console.log('Value:' + DATA[i]);
console.log(e);
}
}为什么要将图像存储在base64中并将其发送到前端,因为您希望将其脱机存储?那不是那个缓存控制的目的吗?
如果没有更多的信息,我就不能建议你使用这种方法:
但是评价者会研究如何在图像本身上设置一个持久的缓存。
顺便说一句,如果Array.join是本地数组,则可以使用DATA:
var result = DATA.join('');如果DATA是一个类似于对象的数组(arguments,{'0': 1, '1': 2, length: 2}),您可以使用:
var result = [].join.call(DATA, '');这样可以解决内存溢出问题,但速度会更快。
发布于 2013-08-12 11:28:50
请看这里..。这应该对你有帮助
Javascript and VERY LONG string
此外,请参阅Javascript StringBuilder at -
http://www.codeproject.com/Articles/12375/JavaScript-StringBuilder
发布于 2013-08-12 10:38:32
如果你用
result = DATA.join("");https://stackoverflow.com/questions/18184847
复制相似问题