javascript - 解析大型 JSON 文件时页面卡住

标签 javascript json

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

我用 google 搜索了一下 jsonstream ( https://github.com/dominictarr/JSONStream ),我的理解是它是针对 nodejs 的?并且无法理解。

如果有人展示了一些简单的例子,我们将不胜感激。 谢谢!!

最佳答案

可能有用的一件事是使用网络 worker :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);
}

关于javascript - 解析大型 JSON 文件时页面卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28642193/

相关文章:

json - 如何使用 Alamofire 恢复活力

javascript - Jquery 选择一个对象但隐藏同一类型的其他对象

javascript - 点击上传按钮上传文件后如何重新加载Jqgrid?

javascript - drupal 6中使用javascript计算

java - 使用 Mule ESB 解析 MySQL 存储过程结果集

java - Android Studio httpURLConnection 应用程序崩溃

Javascript History.Go 默认页面(如果不是当前站点)

javascript - 计算图像 map 区域坐标时出错

c# - 反序列化呈现为不同类型的节点

json - 如何使用 'For Each' 在 LogicApp 中检索和更新 JSON 值