イベント ループは、非同期操作を効率的に処理できるようにする Node.js の中心的な概念です。これがどのように機能するかを簡単に説明します:
Node.js は単一スレッドで動作します。これは、一度に 1 つのコードしか実行できないことを意味します。ただし、Node.js は、複数のスレッドを必要とせずに多くの操作を同時に処理できるように設計されています。
Node.js はノンブロッキング I/O 操作を使用します。 Node.js は、ファイルの読み取り、データベースのクエリ、ネットワーク リクエストの作成などのタスクを実行するとき、これらのタスクの完了を待たずに次のタスクに進みます。代わりに、これらのタスクの処理中に他のコードの実行を継続します。
イベント ループは、コードの実行の管理と非同期イベントの処理を担当します。タスクの「キュー」を継続的にチェックし、どれを実行するかを決定します。段階的な内訳は次のとおりです:
非同期タスクは完了すると、コールバックをキューにプッシュします。イベント ループはこれらのコールバックをキューから取得し、順番に実行します。
メイン キューとは別に、process.nextTick() または Promise の .then() ハンドラーでスケジュールされたコールバックがキューに入れられるマイクロタスク キュー (または次のティック キュー) もあります。マイクロタスクは通常のコールバックよりも優先されます。つまり、現在の操作が完了した後、イベント ループが次のフェーズに進む前に実行されます。
イベント ループがどのように機能するかを示す簡単な例を次に示します:
const fs = require('fs'); console.log('Start'); fs.readFile('file.txt', (err, data) => { if (err) throw err; console.log('File read complete'); }); console.log('End');
出力:
Start End File read complete
説明:
イベント ループを使用すると、操作をシステムに委任し、その結果を非同期で処理することにより、シングルスレッドであるにもかかわらず、Node.js が一度に多くの操作を効率的に処理できるようになります。
イベント ループはタスクの実行を調整し、マイクロタスク キューを優先して、メイン タスク キューのタスクに進む前に Promise と関連操作が迅速に解決されるようにします。 (マクロタスク)。
このダイナミックにより、JavaScript はシングルスレッド環境で複雑な非同期動作を処理できるようになります。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3