Solved
Node.jsのイベントループとブロッキング処理の関係が分からない
Taro · 6/15/2026 · 36 views
Node.jsはシングルスレッドで非同期処理が得意と聞きますが、重いforループの計算を書いたら他のリクエストの処理も止まってしまいました。なぜですか?
Taro · 6/15/2026 · 36 views
Node.jsはシングルスレッドで非同期処理が得意と聞きますが、重いforループの計算を書いたら他のリクエストの処理も止まってしまいました。なぜですか?
Node.jsが「非同期に強い」のは、I/O(ファイル読み書きやネットワーク通信など)を待っている間に他の処理を進められる、という意味であって、CPUを使う計算処理そのものを裏で並列に実行してくれるわけではありません。
JavaScriptのコード自体はシングルスレッドのイベントループ上で1つずつ順番に実行されるので、重いforループのような同期的な計算処理を書くと、その処理が終わるまでイベントループ全体がブロックされ、他のリクエストの処理(他のタイマーやI/Oのコールバック含む)も一切進まなくなります。
対処法としては、
のいずれかを検討してください。特に画像処理や暗号化処理など明確に重い処理がある場合はWorker Threadsに逃がすのが素直な解決策です。
✓ This question has been solved