【Node.js24.x】EventEmitter::removeListener()メソッドの使い方
removeListenerメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
removeListenerメソッドは、Node.jsのイベント駆動型プログラミングの中心となるEventEmitterクラスのインスタンスが、特定のイベントに登録されたリスナー関数(イベントが発生した際に実行される処理)の登録を解除するために使用するメソッドです。これは、もはや特定のイベントの通知を受け取る必要がなくなった場合や、リソースのリークを防ぎたい場合に非常に重要です。
このメソッドは、解除したいイベントの名前を第一引数に、そして解除したいリスナー関数そのものを第二引数に渡して呼び出します。イベント名は文字列またはSymbolで指定し、リスナー関数は登録時と全く同じ関数インスタンスである必要があります。例えば、同じイベント名であっても、異なる関数インスタンスとして登録されたリスナーは削除されませんし、匿名関数を直接登録した場合は、その匿名関数への参照がなければ削除が困難になる点に注意が必要です。
removeListenerメソッドを呼び出すと、指定されたリスナーがそのイベントのリスナーリストから削除され、以降そのイベントが発生しても、削除されたリスナー関数は実行されなくなります。このメソッドは、呼び出し元のEventEmitterインスタンス自身を返すため、他のEventEmitterメソッドとチェーンして記述することが可能です。また、このremoveListenerメソッドは、offメソッドと同じ機能を持つエイリアス(別名)であるため、どちらを使用しても同様の結果が得られます。システムが不要なイベントを監視し続けることを防ぎ、効率的で安定した動作を維持するために役立つ機能です。
構文(syntax)
1const EventEmitter = require('events'); 2const myEmitter = new EventEmitter(); 3 4const myListener = () => { 5 // このリスナーは削除されます 6}; 7 8// 事前にリスナーを追加(removeListenerの前提) 9myEmitter.on('myEvent', myListener); 10 11// myEventイベントからmyListener関数を削除します 12myEmitter.removeListener('myEvent', myListener);
引数(parameters)
eventName, listener
- eventName: string: 削除したいリスナーが登録されているイベントの名前。
- listener: Function: 削除したいリスナー関数。
戻り値(return)
EventEmitter
このメソッドは、イベントリスナーを削除した後の EventEmitter オブジェクト自身を返します。これにより、メソッドチェーンで連続して操作を行うことが可能になります。