我正在尝试使用Javascript中的JSON.parse加载一个8MB的json文件,但页面会冻结大约1-2分钟,有没有办法解析异步并放置加载信息甚至百分比信息改善用户接口
我谷歌有点发现jsonstream(https://github.com/dominictarr/JSONStream),我的理解是它是针对nodejs的吗?并且无法理解。
如果某人有一些简单的例子显示将非常感激。 谢谢!
答案 0 :(得分:3)
可能有用的一件事是使用网络工作者:https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/basic_usage
这会将解析过程移动到一个单独的线程中,该线程在功能上会异步解析您的文件。
让我们说你有main.js和worker.js。在main.js中你可以有类似的东西:
var myWorker = new Worker("worker.js");
myWorker.postMessage(jsonValue); //jsonValue = your json file
myWorker.onmessage = function(e) {
var parsedJSON = e.data;
console.log('Message received from worker', parsedJSON);
}
然后在您的worker.js文件中,您可以:
onmessage = function(e) {
var parsedJSON = JSON.parse(e.data)
postMessage(parsedJSON);
}