ノードイベントエミッター

Nodeでカスタムイベントを操作する方法

ブラウザでJavaScriptを使用している場合は、マウスのクリック、キーボードのボタンの押下、マウスの動きへの反応などのイベントを通じて、ユーザーの操作のどれだけが処理されるかを知っています。

バックエンド側では、Nodeは、を使用して同様のシステムを構築するオプションを提供します。eventsモジュール

このモジュールは、特に、EventEmitterクラス。イベントを処理するために使用します。

次の構文を使用して、EventEmitterオブジェクトを初期化します。

const EventEmitter = require('events')
const eventEmitter = new EventEmitter()

このオブジェクトは、とりわけ、onそしてemitメソッド。

  • emitイベントをトリガーするために使用されます
  • onイベントがトリガーされたときに実行されるコールバック関数を追加するために使用されます

イベントを発して聞く

たとえば、を作成しましょうstartイベント、およびサンプルを提供する問題として、コンソールにログを記録するだけでそれに反応します。

eventEmitter.on('start', () => {
  console.log('started')
})

走るとき

eventEmitter.emit('start')

イベントハンドラー関数がトリガーされ、コンソールログが取得されます。

addListener()のエイリアスですon()、使用されていることがわかった場合。

イベントに引数を渡す

に追加の引数として渡すことにより、イベントハンドラーに引数を渡すことができます。emit()

eventEmitter.on('start', (number) => {
  console.log(`started ${number}`)
})

eventEmitter.emit(‘start’, 23)

複数の引数:

eventEmitter.on('start', (start, end) => {
  console.log(`started from ${start} to ${end}`)
})

eventEmitter.emit(‘start’, 1, 100)

イベントを一度だけ聞く

EventEmitterオブジェクトは、once()メソッド。これを使用して、1回限りのイベントリスナーを作成できます。

そのイベントが発生すると、リスナーはリスニングを停止します。

例:

eventEmitter.once('start', () => {
  console.log(`started!`)
})

eventEmitter.emit(‘start’) eventEmitter.emit(‘start’) //not going to fire

イベントリスナーの削除

イベントリスナーを作成したら、を使用してそれを削除できますremoveListener()方法。

そのためには、最初にのコールバック関数への参照が必要です。on

この例では:

eventEmitter.on('start', () => {
  console.log('started')
})

コールバックを抽出します。

const callback = () => {
  console.log('started')
}

eventEmitter.on(‘start’, callback)

後で電話できるように

eventEmitter.removeListener('start', callback)

次のコマンドを使用して、イベントですべてのリスナーを一度に削除することもできます。

eventEmitter.removeAllListeners('start')

イベントを登録する

ザ・eventNames()EventEmitterオブジェクトインスタンスで呼び出されるメソッドは、現在のEventListenerに登録されているイベントを表す文字列の配列を返します。

const EventEmitter = require('events')
const eventEmitter = new EventEmitter()

eventEmitter.on(‘start’, () => { console.log(‘started’) })

eventEmitter.eventNames() // [ ‘start’ ]

listenerCount()パラメータとして渡されたイベントのリスナーの数を返します。

eventEmitter.listenerCount('start') //1

他のリスナーの前後にリスナーを追加する

複数のリスナーがある場合は、それらの順序が重要になる場合があります。

EventEmitterオブジェクトインスタンスは、orderを操作するためのいくつかのメソッドを提供します。

emitter.prependListener()

を使用してリスナーを追加する場合onまたはaddListener、リスナーのキューの最後に追加され、最後に呼び出されます。使用するprependListener他のリスナーの前に追加され、呼び出されます。

emitter.prependOnceListener()

を使用してリスナーを追加する場合once、リスナーのキューの最後に追加され、最後に呼び出されます。使用するprependOnceListener他のリスナーの前に追加され、呼び出されます。

私の無料ダウンロードNode.jsハンドブック


その他のノードチュートリアル: