【Node.js24.x】EventEmitter::once()メソッドの使い方
onceメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
onceメソッドは、EventEmitterインスタンスから特定のイベントが一度だけ発生した際に、指定された処理を実行するメソッドです。Node.jsでは、EventEmitterは、ファイルIOの完了やネットワーク接続の確立など、プログラム内で発生する特定の出来事(イベント)を発生させ、そのイベントに反応する関数(イベントリスナー)を登録する仕組みを提供します。
このonceメソッドを使用すると、登録したイベントリスナーは、対象のイベントが一度だけ発生した後に自動的に削除されます。そのため、イベントが複数回発生する可能性があっても、最初の1回だけ処理を実行したい場合に非常に便利です。例えば、一度だけ初期設定を行う場合や、リソースの準備が一度だけ完了したことを検知して次の処理に進む場合などに役立ちます。
また、onceメソッドはPromiseオブジェクトを返します。これにより、非同期処理としてイベントの発生を待機し、イベント発生時のデータを取得したり、タイムアウト処理を組み合わせたりすることが容易になります。Promiseを使うことで、イベント処理の完了を待って次の処理を進めたり、エラーが発生した場合のハンドリングを統一的に行ったりすることが可能になり、非同期処理をより効率的かつ安全に記述できます。
構文(syntax)
1import { EventEmitter } from 'events'; 2 3const myEmitter = new EventEmitter(); 4 5(async () => { 6 const eventArguments = await EventEmitter.once(myEmitter, 'eventName'); 7})(); 8 9myEmitter.emit('eventName', 'firstArgument', 123);
引数(parameters)
emitter, name, options = {}
- emitter: EventEmitter: イベントを発行するEventEmitterインスタンス
- name: string: リッスンするイベントの名前
- options: object = {}: イベントリスナーの設定オプション
戻り値(return)
Promise
EventEmitter.once メソッドは、指定されたイベントが一度だけ発火した際に解決される Promise を返します。この Promise は、イベントリスナーが一度実行された後に自動的に解除されるため、イベントの初回発生のみを捕捉したい場合に便利です。