Q1: アプリケーションがシングルスレッドの場合、JS エンジンがリクエストを受け入れて実行するときにタイムアウトはどのように処理されますか?
A: ノードがイベントを管理します単一スレッドで実行されているにもかかわらず、IO スレッドを含む複数のスレッドを介したループ機構。ノードは、完了した IO 操作について OS を監視し、完了したネットワーク要求またはファイルシステム呼び出しを検出すると、それらを実行するキューに追加します。
Q2: これらの setTimeout 関数を背後で実行するものは何ですか?シーン?
A: イベント ループはコールバックのスケジュールと実行を担当します。 setTimeout 呼び出しに関連付けられた関数。 JavaScript はバックグラウンドで実行されません。むしろ、OS が IO 操作の完了を示したときに実行する JavaScript 関数のキューを維持します。
Q3: JS エンジンは、イベント ループに配置する非同期関数をどのように認識しますか?
A: ノードには、システムコールを行う非同期関数の事前定義されたセットがあります。これらの関数が呼び出されると、Node はそれらの関数を非同期であると識別し、イベント ループでの実行のためにコールバック関数をキューに入れます。
Q4: 一部のソースでは、イベント ループがその後コードを処理すると主張しているのはなぜですか?非同期関数が実行されました?
A: このステートメントは誤解を招く可能性があります。イベント ループは、非同期関数に続くコードが実行されるまで処理を開始しませんが、コールバック関数をすぐにキューに追加します。通常、非同期関数の後のコードは重要な作業を実行しないため、イベント ループがその実行後にのみ開始されるという印象を与えます。
Q5: 「async」キーワードはありますか、または非同期メソッドを示すために、C# などの JS にも同様のメカニズムはありますか?
A: いいえ、JavaScript は行います。明示的な「async」キーワードまたは属性はありません。ノードは、事前定義されたシステムコール関数の使用に基づいて非同期関数を識別します。
以上がNode.js のイベント ループは非同期操作をどのように管理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。