0
  1. 读取/解析 JSON 对象(例如通过<script>DOM 节点,例如 JSONP)是否是(大多数)浏览器的同步阻塞操作?

  2. 在什么情况下,JSON 对象太大而无法对对象进行客户端操作(例如锁定浏览器、脚本运行速度太慢等)?

4

2 回答 2

2

是的,解析 JSON 字符串是一个阻塞操作。(请注意,如果您正在使用来自 Web 服务的 JSONP,那么您不必明确地将字符串解析为 JS)。

您必须有一个非常大的 JSON 字符串才能成为现代浏览器的问题。如果您发现某个操作确实锁定了浏览器,您可以通过 web worker 避免这种情况,这允许阻塞操作在单独的线程中完成。

于 2012-10-23T20:48:37.723 回答
1

1) 是的,解析 JSON 是阻塞的。非阻塞操作的标志是像这样传递回调:

$.get('/stuff/1', function (data) {
    // do stuff with `data`
});

而块操作通常是这样编写的

var stuff = JSON.parse(theData);

如果JSON.parse是非阻塞的,它看起来像这样:

JSON.parse(theData, function (stuff) {
    // process `stuff`
});

解析 JSON 是一个非常快速的操作,因此它不需要是非阻塞的。

2)真的很大。解析 JSON,尤其是在具有本机JSON.parse方法的浏览器(几乎所有)中非常快。JSON 是一种简单的格式,因此可以快速解析。

于 2012-10-23T20:33:30.857 回答