请原谅这个小问题,但我更习惯 C++ 和 Python 代码,而不是 javascript。
我有来自 THREE JS PLY 加载器的以下代码:
var geometry;
var scope = this;
if (data instanceof ArrayBuffer) {
geometry = isASCII(data) ? parseASCII(bin2str(data)) : parseBinary(data);
} else {
geometry = parseASCII(data);
}
parse: function (data) {
function isASCII(data) {
var header = parseHeader(bin2str(data));
return header.format === 'ascii';
}
function bin2str(buf) {
var array_buffer = new Uint8Array(buf);
var str = '';
for (var i = 0; i < buf.byteLength; i++) {
str += String.fromCharCode(array_buffer[i]); // implicitly assumes little-endian
}
return str;
}
如果我加载一个小层文件,它工作正常,但浏览器在非常大的层文件上崩溃。我认为有两个“可能”的问题:
1) 在大文件上,函数 bin2str(buf) 返回的字符串 str 可能无法处理解析过程
2) 函数 isASCII(data) 中的行
parseHeader(bin2str(data));
由于 bin2str(data) 无法及时返回正确的值,导致浏览器崩溃,因为该过程非常消耗内存
我正在使用条件,因为我不完全确定问题是什么。有什么建议和/或可能的解决方案吗?
谢谢,
恐龙
最佳答案
最终我采用的解决方案是使用免费软件 MeshLab 来删除我的文件。
希望这有帮助。
恐龙
关于javascript函数等待数据可用性或变量无法处理大量数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43478435/