この記事では、Node.js モジュールのイベント モジュールを理解し、イベント駆動型とは何か、NodeJS のイベント アーキテクチャ、イベント モジュールのコア API などを紹介します。皆さんのお役に立てれば幸いです!
公式説明の引用: Node.js のコア API のほとんどは、慣用的な非同期イベント駆動型アーキテクチャを中心に構築されており、特定の型のオブジェクト ( 「トリガー」と呼ばれる)は、指定されたイベントを起動し、
Function
オブジェクト (「リスナー」) を呼び出します。
Node の調査と適用を通じて、NodeJS がシングルスレッド、イベント駆動型、ノンブロッキング I/O およびその他のアーキテクチャ設計を採用していることがわかりました。同時実行性が高く、I/O 集中型のアプリケーションに適しています。
イベントドリブンとは、簡単に言うと、効果的な方法でイベントのステータスの変化を 監視し、変化が発生したときに対応するアクションを実行することです。
理解するために、人生のアプリケーションのシナリオを考えてみましょう。私たちがレストランに食べ物を注文するとき、注文をした後、ウェイターは注文番号を教えてくれます (これはイベントの登録と理解できます)。私たちは座っています 待っている間、私たちの耳はウェイターの呼びかけを聞いていました。呼ばれたら、フロントデスクに食事を取りに行くことができます。2. イベント モデル
NodeJS のイベント アーキテクチャは、古典的なサブスクリプション発行モデルを採用していますサブスクリプション発行モデルは、メッセージ メカニズムと呼ぶこともできます。依存関係。この依存関係は、オブジェクトの対応する状態遷移を同時に監視する N (複数または単一) のオブザーバーのペアとして理解できます。変更が発生すると、すべてのオブザーバーに通知され、オブザーバーによって登録された対応するイベントがトリガーされます。デザインパターンは、対象物と観察者の間の機能的結合を解決します。 3. events モジュール events モジュールは NodeJS の非常に重要なモジュールです。node 内のほとんどのモジュールの実装は、fs、http、net などの Events クラスを継承します。これは、オブジェクト events.EventEmitter を提供します。EventEmitter の中核は、イベントの発行とイベント リスナーです。 簡単な使用法:import { EventEmitter } from 'events'; class MyEmiter extends EventEmitter{}; const myEmitter = new MyEmiter(); myEmitter.on('hello', () => { console.log('hello 有人喊你啦'); }); myEmitter.emit('hello');
イベントをリッスンするために登録します##パラメータ:
#eventName: イベント名
#callback: イベントがトリガーされたときに呼び出されるコールバック関数特定のイベントに対して最大 1 回呼び出すことができるリスナーを登録できます。イベントがトリガーされると、リスナーは登録解除されてから呼び出されます。 パラメータ:
指定されたリスニング イベントをトリガーしますパラメータ:
指定されたイベントのリスナーを削除します。注: リスナーは登録されている必要があります。それ以外の場合は無効です。 パラメータ:
すべてのリスナーを削除します。イベントには複数のリスナーを含めることができます。それらをすべて削除する必要がある場合は、このメソッドを使用できます。 パラメータ:
EventEmitter.listeners(eventName)
eventName A という名前のイベントのリスナー バインディングを返します。指定されたコールバック関数配列のコピー。
EventEmitter.eventNames()
トリガーがリスナーを登録したイベントをリストする配列を返します。 4.8 EventEmitter.setMaxListeners(n)
デフォルトでは、特定のイベントに 10 を超える数が追加された場合リスナー、
EventEmitter は警告を出力します。
emitter.setMaxListeners() メソッドを使用すると、この特定の EventEmitter
インスタンスの制限を変更できます。リスナーの数が無制限であることを示すには、値を Infinity
(または
) に設定できます。 5. 同期と非同期の問題
6. エラー処理
如果 EventEmitter
没有为 'error'
事件注册至少一个监听器,并且触发 'error'
事件,则会抛出错误,打印堆栈跟踪,然后退出 Node.js 进程。
作为最佳实践,应始终为 'error'
事件添加监听器。
import { EventEmitter } from 'events'; class MyEmiter extends EventEmitter{}; const myEmitter = new MyEmiter(); myEmitter.on('hello', () => { console.log('hello 有人喊你啦'); }); myEmitter.on('error', (e) => { console.log(e) }) myEmitter.emit('hello'); myEmitter.emit('error', new Error('an error happen'))
更多node相关知识,请访问:nodejs 教程!!
以上がNode.js のイベント モジュールについて話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。