解析大型JSON文件时页面冻结

时间:2015-02-21 04:46:34

标签: javascript json

我正在尝试使用Javascript中的JSON.parse加载一个8MB的json文件,但页面会冻结大约1-2分钟,有没有办法解析异步并放置加载信息甚至百分比信息改善用户接口

我谷歌有点发现jsonstream(https://github.com/dominictarr/JSONStream),我的理解是它是针对nodejs的吗?并且无法理解。

如果某人有一些简单的例子显示将非常感激。 谢谢!

1 个答案:

答案 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);
}