Nodejs-event-loop
Node.js-イベントループ
Node.jsはシングルスレッドアプリケーションですが、 event および callbacks の概念を介して並行性をサポートできます。 Node.jsのすべてのAPIは非同期であり、シングルスレッドであるため、* async関数呼び出し*を使用して同時実行性を維持します。 ノードはオブザーバーパターンを使用します。 ノードスレッドはイベントループを保持し、タスクが完了するたびに、対応するイベントを起動し、イベントリスナー関数に実行を通知します。
イベント駆動型プログラミング
Node.jsはイベントを頻繁に使用するため、Node.jsが他の同様のテクノロジーと比較して非常に高速である理由の1つでもあります。 Nodeはサーバーを起動するとすぐに、変数を開始し、関数を宣言し、イベントが発生するのを待ちます。
イベント駆動型アプリケーションでは、通常、イベントをリッスンし、それらのイベントの1つが検出されるとコールバック関数をトリガーするメインループがあります。
イベントはコールバックに非常に似ていますが、非同期関数が結果を返すときにコールバック関数が呼び出されるという事実に違いがありますが、イベント処理はオブザーバーパターンで機能します。 イベントをリッスンする関数は、*オブザーバー*として機能します。 イベントが発生すると、そのリスナー関数の実行が開始されます。 Node.jsには、次のようにイベントとイベントリスナーをバインドするために使用されるイベントモジュールとEventEmitterクラスを通じて利用可能な複数の組み込みイベントがあります-
以下は、イベントハンドラをイベントにバインドするための構文です-
次のようにプログラムでイベントを起動できます-
例
次のコードでmain.jsという名前のjsファイルを作成します-
今、上記のプログラムを実行し、その出力を確認してみましょう-
ITは、次の結果を生成する必要があります-
ノードアプリケーションの仕組み
Node Applicationでは、非同期関数は最後のパラメーターとしてコールバックを受け入れ、コールバック関数は最初のパラメーターとしてエラーを受け入れます。 前の例をもう一度見てみましょう。 次の内容のinput.txtという名前のテキストファイルを作成します。
次のコードを持つmain.jsという名前のjsファイルを作成します-
ここで、fs.readFile()はファイルを読み取ることを目的とする非同期関数です。 読み取り操作中にエラーが発生した場合、* errオブジェクト*には対応するエラーが含まれます。それ以外の場合、データにはファイルの内容が含まれます。 readFile は、読み取り操作の完了後にエラーとデータをコールバック関数に渡し、最終的にコンテンツを出力します。