我正在尝试将大型JSON文件加载到javascript中的数据结构中。为了避免阻塞浏览器,我将数据读取循环拆分为块。但我仍然得到一个阻止浏览器。这是我的代码。
function loadTransformation(){
$.getJSON('transformation.json', function(data) {
var NUMBER_OF_RECORDS = data.length;
var CHUNK = 100;
var i = 0;
readData();
function readData(){
var cnt = CHUNK;
while(i < NUMBER_OF_RECORDS && cnt--){
// Do some loading stuff here
i++;
} // end of while
if(i < NUMBER_OF_RECORDS) {
setTimeout(readData(), 1);
}
}
});
}
我不明白我的代码有什么问题。
答案 0 :(得分:1)
setTimeout(readData, 1000);
Read about JavaScript window.setTimeout here...
您已拨打readData()
作为setTimeout
的第一个参数,这不是我想要的......
答案 1 :(得分:1)
您可能需要查看Oboe.js。它是一个在Node.js和Web浏览器下运行的库,用于使用流加载JSON。这意味着您可以在完全下载之前开始处理JSON数据。