events
eventsモジュールは、JSHで使用できるシンプルなEventEmitter実装を提供します。
複数のJSH組み込みモジュールが、イベント駆動APIの基底クラスとしてこの実装を使用します。
一般的な使用方法は以下のとおりです。
const EventEmitter = require('events');EventEmitter
新しいイベントエミッターのインスタンスを作成します。
構文
new EventEmitter()イベント名ごとにリスナーを保存します。変更を行うメソッドの多くはエミッター自身を返すため、呼び出しを連鎖できます。
on()
イベントリスナーを登録します。
構文
emitter.on(event, listener)listenerは関数である必要があります。それ以外はTypeErrorが発生します。
addListener()
on()の別名です。
構文
emitter.addListener(event, listener)once()
1回だけ実行するリスナーを登録します。
構文
emitter.once(event, listener)最初の呼び出し後に自動的に削除されます。
removeListener()
一致するリスナーを1つ削除します。
構文
emitter.removeListener(event, listener)off()
removeListener()の別名です。
構文
emitter.off(event, listener)removeAllListeners()
指定したイベントのすべてのリスナーを削除します。引数を省略すると、すべてのイベントリスナーを削除します。
構文
emitter.removeAllListeners()
emitter.removeAllListeners(event)emit()
イベントを発生させ、残りの引数をリスナーに渡します。
構文
emitter.emit(event, ...args)戻り値
- 対応するイベントにリスナーが1つ以上ある場合は
true - ない場合は
false
error以外のイベント処理中にリスナーが例外をスローし、エミッターにerrorリスナーがある場合は、emit('error', err)でそのエラーを渡します。
状態取得ヘルパー
listeners()
指定したイベントに登録済みのリスナー配列の浅いコピーを返します。
emitter.listeners(event)listenerCount()
イベントに登録済みのリスナー数を返します。
emitter.listenerCount(event)eventNames()
現在登録済みのイベント名一覧を返します。
emitter.eventNames()リスナー数の制限
setMaxListeners()
リスナー数の警告しきい値を設定します。
emitter.setMaxListeners(n)getMaxListeners()
現在のリスナー数の警告しきい値を返します。
emitter.getMaxListeners()既定の最大値は、イベントごとに10個です。
この上限を超えると、console.warn()で警告を出力しますが、リスナーの登録自体は阻止しません。
使用例
| |
once() 例
| |
動作に関する注意
- このモジュールは、
EventEmitterクラスを直接エクスポートします。 - これは軽量な実装であり、Node.jsの
eventsを完全に置き換えるものではありません。 emit()ではリスナー配列をコピーして走査するため、イベント発生中にリスナーを削除しても、その回の配信には影響しません。- リスナー数超過の警告のみを行い、登録自体はブロックしません。
最終更新日