0
  1. JSON オブジェクトの読み取り/解析 ( <script>JSONP などの DOM ノードを介したものなど) は、(ほとんどの) ブラウザーの同期ブロック操作ですか?

  2. JSON オブジェクトが大きすぎて、オブジェクトに対するクライアント側の操作が不可能になるのはどの時点ですか (例: ブラウザーがロックされる、スクリプトの実行が遅すぎるなど)?

4

2 に答える 2

2

はい、JSON 文字列の解析はブロック操作です。(Web サービスから JSONP を使用している場合は、明示的に文字列を解析して JS にする必要はないことに注意してください)。

これが最新のブラウザーで問題になるには、非常に大きな JSON 文字列が必要です。操作によってブラウザーがロックされることがわかった場合は、Web ワーカーによってこれを回避できます。これにより、ブロック操作を別のスレッドで実行できます。

于 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 に答える