【Node.js24.x】EventEmitter::addAbortListener()メソッドの使い方
addAbortListenerメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
addAbortListenerメソッドは、EventEmitterクラスに属し、特定のイベントに対するリスナーを登録する際に利用するメソッドです。このメソッドの最大の特徴は、AbortSignalオブジェクトと連携してイベントリスナーを管理する点にあります。
具体的には、イベント名、リスナー関数、そしてAbortSignalオブジェクトを引数として受け取ります。登録されたリスナーは、通常通り指定されたイベントが発生した際に実行されますが、関連付けられたAbortSignalがアボート(処理中止)された場合には、一度だけ実行された後、EventEmitterから自動的に削除されるという挙動を示します。この自動的な削除機能により、リスナーが不要になった際に手動でremoveListenerを呼び出す手間を省き、意図しないメモリリークや不要なイベント処理の発生を防ぐことができます。
主に、ネットワークリクエストやファイル操作のような長時間実行される非同期処理において、処理のキャンセル機構を実装する場合に非常に有用です。例えば、ユーザーが操作をキャンセルした際に、関連するイベントリスナーを自動的にクリーンアップすることで、リソースの適切な解放とアプリケーションの堅牢性を高めることに貢献します。これにより、より効率的で管理しやすい非同期処理を構築することが可能になります。
構文(syntax)
1import { EventEmitter } from 'node:events'; 2 3const myEmitter = new EventEmitter(); 4const abortController = new AbortController(); 5const abortSignal = abortController.signal; 6 7myEmitter.addAbortListener(abortSignal, () => { 8 // アボートシグナルがトリガーされたときに実行される処理 9 console.log('Abort signal received for the emitter.'); 10});
引数(parameters)
signal, listener
- signal: AbortSignal: アボートシグナルを指定します。このシグナルがアボートされたときにリスナーが呼び出されます。
- listener: (...args: any[]) => void: アボートシグナルがアボートされたときに実行されるコールバック関数を指定します。
戻り値(return)
EventEmitter
このメソッドは、処理の中断を検知するためのリスナーをイベントエミッターに追加します。戻り値として、リスナーが追加されたイベントエミッター自身を返します。