ホームページ >ウェブフロントエンド >jsチュートリアル >Node.js でカスタム優先度イベント エミッターを作成する方法

Node.js でカスタム優先度イベント エミッターを作成する方法

Susan Sarandon
Susan Sarandonオリジナル
2024-12-20 16:05:11998ブラウズ

How to Create a Custom Priority Event Emitter in Node.js

設定:

ライブラリのインストールとセットアップ

tsconfig.json と package.json を変更する


Node.js の EventEmitter を理解する

Node.js は、非同期プログラミングでイベントを処理するための基本クラスとして EventEmitter を使用します。このクラスを使用すると、特定のイベントのリスナーを登録し、必要に応じてそれらのイベントを発行できます。デフォルトでは、EventEmitter はリスナーが追加された順序でイベントを処理します。ただし、特定のリスナーの実行を他のリスナーよりも優先したい場合があります。そこで優先順位に基づいたイベント システムを導入できます。

優先イベントエミッターを作成する手順

  1. EventEmitter から継承:
    優先処理を備えたカスタム イベント エミッターを作成するには、組み込みの EventEmitter クラスを拡張する必要があります。これにより、on、emit、removeListener などのすべての組み込みメソッドにアクセスできるようになります。

  1. on メソッドのオーバーライド:
    on メソッドをオーバーライドすることで、カスタム ロジックを追加して、リスナーをその優先順位とともに保存し、優先順位に基づいて並べ替えることができます。

  1. emit メソッドのオーバーライド:
    Emit メソッドはイベントをトリガーし、リスナーを実行します。オーバーライドされたメソッドでは、まず優先度に基づいて _listeners からのリスナーを処理します。

  1. removeListener メソッドのオーバーライド:
    リスナーが参照に基づいて正しく削除されることを保証するために、removeListener メソッドがオーバーライドされます。リスナーをその優先順位とともに保存するため、正しいリスナーを除外します。


PriorityEmitter の仕組み

  • イベントが発行されると、リスナーは優先順位に従って呼び出されます。優先度が高いほど早く実行されます。
  • 同じ優先度を持つリスナーは、追加された順序で実行されます。

使用例

これは、PriorityEmitter が実際にどのように機能するかを示す例です:

出力:

  • 優先度 2 のリスナー (こんにちは、アリス!) が最初に呼び出されます。
  • 次に優先順位 1 のリスナー (こんにちは、アリス!) が呼び出されます。

パフォーマンスに関する考慮事項

  • データ構造の選択: この基本的な例では、配列を使用してリスナーを保存し、リスナーが追加されるたびにリスナーを並べ替えています。リスナーの数が多い場合、これは非効率になる可能性があります。パフォーマンスが重要な環境で優先順位を処理するためのより良いソリューションは、効率的な挿入および削除操作を可能にする最大ヒープを使用することです。
  • 本番環境での使用: 本番レベルのアプリケーションの場合は、大量のイベントをより効率的に処理するための優先キューを提供する、より高度なデータ構造または外部ライブラリの使用を検討してください。

完全なコード

以上がNode.js でカスタム優先度イベント エミッターを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。