【Node.js24.x】EventEmitter::off()メソッドの使い方
offメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
offメソッドは、Node.jsのEventEmitterクラスに属し、特定のイベントに登録されたリスナー関数を削除するメソッドです。システム開発において、アプリケーションが実行中に特定のイベントに対する処理が不要になった際や、メモリリークを防ぐために、以前に登録したイベントリスナーを明示的に解除する目的で使用されます。
このメソッドは、削除したいイベントリスナーが関連付けられているイベントの名前(文字列)と、削除したいリスナー関数本体を引数として受け取ります。具体的には、off(eventName, listener)という形式で呼び出すことで、指定されたイベント名に対して登録されている、完全に一致するリスナー関数がイベントリスナーのリストから取り除かれます。同じリスナー関数が特定のイベントに複数回登録されている場合でも、一度のoffメソッドの呼び出しでは、指定されたイベント名に紐づく、最も新しく登録されたリスナーインスタンス一つだけが削除されます。
offメソッドは、EventEmitterクラスが提供するremoveListenerメソッドのエイリアス(別名)であり、両者は全く同じ機能を提供します。イベントリスナーを追加するためのonメソッドやaddListenerメソッドと対になる関係にあり、イベント駆動型プログラミングにおいて、イベントハンドラーの登録と解除を適切に管理するための非常に重要な機能です。このメソッドはEventEmitterインスタンス自身を返すため、複数のoff操作を連結して記述するメソッドチェーンを行うことも可能です。
構文(syntax)
1const EventEmitter = require('node:events'); 2const myEmitter = new EventEmitter(); 3 4function myListener() { 5 console.log('リスナーが実行されました'); 6} 7 8// 'myEvent' イベントにリスナーを追加 9myEmitter.on('myEvent', myListener); 10 11// イベントを発火 (リスナーが実行される) 12myEmitter.emit('myEvent'); 13 14// 'myEvent' イベントから特定のリスナーを削除 15myEmitter.off('myEvent', myListener); 16 17// イベントを再度発火 (リスナーは削除されたため実行されない) 18myEmitter.emit('myEvent');
引数(parameters)
eventName, listener
- eventName: string: 監視を解除したいイベントの名前
- listener: Function: 監視を解除したいイベントリスナー関数
戻り値(return)
EventEmitter
EventEmitterインスタンス自身が返されます。これにより、メソッドチェーン(メソッドを連続して呼び出すこと)が可能になります。