JSON.parse の使用は、JSON 文字列を解析して JavaScript オブジェクトにする最も一般的な方法です。
これは同期コードですが、実際にイベント ループをブロックしますか (ユーザーのコードよりもはるかに低いレベルであるため)。
JSON を非同期に解析する簡単な方法はありますか? 数 KB - 数百 KB の JSON データで問題になるのでしょうか?
コールバックを受け入れない、または promise を返さない関数は、値を返すまでブロックされます。
はい、JSON.parse
ブロックします。JSON の解析は CPU を集中的に使用するタスクであり、JS はシングル スレッドです。したがって、解析はある時点でメインスレッドをブロックする必要があります。非同期は、別のプロセスまたはシステムを待機している場合にのみ意味があります (これが、生の CPU 処理よりも待ち時間が長いため、ディスク I/O とネットワークが非同期に適している理由です)。
解析の最適化を開始する前に、JSON の解析が実際にアプリのボトルネックであることを最初に証明します。そうではないと思います。
負荷の高い JSON デコードを行う必要があると思われる場合は、別のプロセスに移動することを検討してください。当たり前のように思えるかもしれませんが、node.js をうまく使うための鍵は名前にあります。
CPU 負荷の高いタスクを別の「ノード」トップ ハンドルに設定するには、IPC を使用します。単純なソケットで十分ですが、ØMQ はさまざまなトランスポートをサポートするという点で放射魔法のタッチを追加します。
ソケットの接続と JSON の送信のオーバーヘッドが全体的に集中している可能性がありますが、ブロックは確実に停止します。