ノードの使用方法および方法.実際のプロジェクトのJSイベントエミッタ?


オブザーバパターンとイベントエミッタ


オブザーバーパターンは、その状態の変化が発生したときに、一連のオブザーバー(またはリスナー)に通知できるオブジェクト(対象と呼ばれる)を定義します.
これは、配列内のリスナを登録して格納できるクラスを使用してOOPで実装できます.
ノードで.JSは、events内蔵モジュールからインポートされるEventEmitatorクラスを使用して実装できます.これは、イベントを(複数のリスナーを使用して)を発すると聞くことができます.

EventEventsはイベントコアモジュールからエクスポートされます.
const { EventEmitter } = require("events");
const emitter = new EventEmitter();
eventエミッタの基本的な方法は以下の通りです.
  • on(event, listener) :このメソッドは、与えられたイベントタイプ(文字列)の新しいリスナー(関数)を登録できます.
  • once(event, listener) :このメソッドは新しいリスナーを登録します.新しいリスナーを登録します.
  • emit(event, [arg1], [...]) :このメソッドは新しいイベントを生成し、リスナーに渡される追加の引数を提供します.
  • removeListener(event, listener) :このメソッドは、指定したイベント型のリスナーを削除します.
  • EventReiterを使用するとき


    これはバックエンドプロジェクトで使用することができますここで私はそれを使用して実際の例は、LMSでは、教師が私は教師に登録されているすべての学生に電子メールと通知を送信する必要がある新しいレッスンを発行するとき.したがって、私たちは、教師が電子メールと通知を送るのを待ちません、そして、通知が成功応答を得るために送られなければならないように、Publishレッスン要求にそのコードを置くべきではありません.
    別の例では、リアルタイムのダッシュボードを更新したり、新しいユーザーがサインアップするときに投資家に通知を送信する必要があるときです.

    本当のプロジェクトでeventエミッタを使う方法


    このフォルダ構造を作成します
    /events
        /subscribers
            /lessons.subscriber.js
            /users.subscriber.js
        /emitter.js
        /index.js
    
    /emitter.js新しいeventエミッタを作成し、それをエクスポートします.
    const { EventEmitter } = require("events");
    
    module.exports = new EventEmitter();
    
    /index.js作成されたeventエミッタをインポートし、イベントの名前をエクスポートします.
    const EventEmitter = require("./emitter");
    
    module.exports = {
      EventEmitter,
      events: {
        LESSON_PUBLISHED: "LESSON_PUBLISHED",
        NEW_SIGNUP: "NEW_SIGNUP"
      }
    };
    
    また、イベントの名前を別のファイルに分けることもできますが、必要はありません.subscribers/users.subscriber.jsイベントとEventEmitatorインスタンスをインポートし、イベントを聞きます.
    const { events, EventEmitter } = require("../");
    
    EventEmitter.on(events.NEW_SIGNUP, user => {
      // Your logic
    }
    
    ここでは、リスナーの部分で行われます.コントローラまたはサービスでは、EventEmitatorインスタンスをインポートし、イベントの名前を使用してイベントを発行し、次のようなデータを渡します.
    EventEmitter.emit(events.NEW_SIGNUP, user);
    
    この記事が好きなので、もっと欲しいならブログについていけます.