Share via


Amqp class

セキュリティで保護された (TLS) ソケット経由で AMQP プロトコルを使用して Azure IoT ハブに接続するために サービス クライアント によって使用されるトランスポート クラス。 このクラスは直接使用しないでください。代わりに、ファクトリ メソッド (ClientfromConnectionString または fromSharedAccessSignature) のいずれかに渡す必要があります。

Extends

EventEmitter

継承されたプロパティ

captureRejections

値: ブール値

すべての新しいEventEmitterオブジェクトの既定captureRejectionsのオプションを変更します。

captureRejectionSymbol

値: Symbol.for('nodejs.rejection')

カスタム rejection handlerを記述する方法を参照してください。

defaultMaxListeners

既定では、任意の 1 つのイベントに対して最大の 10 リスナーを登録できます。 この制限は、 メソッドを使用して個々 EventEmitter のインスタンスに emitter.setMaxListeners(n) 対して変更できます。 すべてのEventEmitterインスタンスの既定値を変更するには、 プロパティをevents.defaultMaxListeners使用できます。 この値が正の数値でない場合は、 RangeError がスローされます。

変更は変更前に作成されたものも含め、すべてのEventEmitterインスタンスに影響するため、 を設定events.defaultMaxListenersするときは注意してください。 ただし、 の呼び出し emitter.setMaxListeners(n) は 引き続き よりも events.defaultMaxListeners優先されます。

これはハードな制限ではありません。 EventEmitterインスタンスにより多くのリスナーを追加できますが、"EventEmitter メモリ リークの可能性" が検出されたことを示すトレース警告が stderr に出力されます。 単一 EventEmitterの の 場合、 emitter.getMaxListeners() メソッドと emitter.setMaxListeners() メソッドを使用して、この警告を一時的に回避できます。

import { EventEmitter } from 'node:events';
const emitter = new EventEmitter();
emitter.setMaxListeners(emitter.getMaxListeners() + 1);
emitter.once('event', () => {
  // do stuff
  emitter.setMaxListeners(Math.max(emitter.getMaxListeners() - 1, 0));
});

--trace-warningsコマンド ライン フラグを使用して、このような警告のスタック トレースを表示できます。

生成された警告は、 を使用してprocess.on('warning')検査でき、イベント エミッタ インスタンス、イベントの名前、アタッチされたリスナーの数をそれぞれ参照する追加emittertypecountの 、、および プロパティを持つことになります。 その name プロパティは に 'MaxListenersExceededWarning'設定されます。

errorMonitor

このシンボルは、イベントの監視 'error' 専用のリスナーをインストールするために使用する必要があります。 このシンボルを使用してインストールされたリスナーは、通常 'error' のリスナーが呼び出される前に呼び出されます。

このシンボルを使用してリスナーをインストールしても、イベントが生成された後 'error' の動作は変更されません。 そのため、通常 'error' のリスナーがインストールされていない場合でも、プロセスはクラッシュします。

継承されたメソッド

addAbortListener(AbortSignal, (event: Event) => void)

指定signalされた でイベントを abort 1 回リッスンします。

中止シグナルでイベントを abort リッスンすることは安全ではなく、シグナルを持つ別のサード パーティが を呼び出 e.stopImmediatePropagation()すことができるため、リソース リークにつながる可能性があります。 残念ながら、Node.js は Web 標準に違反するため、これを変更できません。 また、元の API を使用すると、リスナーの削除を忘れやすくなります。

この API では、リスナーの実行を妨げるようなイベントstopImmediatePropagationをリッスンすることで、これら 2 つの問題を解決することで、Node.js API で を安全に使用AbortSignalできます。

より簡単に登録を解除できるように、破棄可能な を返します。

import { addAbortListener } from 'node:events';

function example(signal) {
  let disposable;
  try {
    signal.addEventListener('abort', (e) => e.stopImmediatePropagation());
    disposable = addAbortListener(signal, (e) => {
      // Do something when signal is aborted.
    });
  } finally {
    disposable?.[Symbol.dispose]();
  }
}
addListener<K>(string | symbol, (args: any[]) => void)

emitter.on(eventName, listener)エイリアス。

emit<K>(string | symbol, AnyRest)

という名前 eventNameのイベントに登録されている各リスナーを、登録された順序で同期的に呼び出し、指定された引数をそれぞれに渡します。

イベントに true リスナーがある場合は を false 返します。それ以外の場合は を返します。

import { EventEmitter } from 'node:events';
const myEmitter = new EventEmitter();

// First listener
myEmitter.on('event', function firstListener() {
  console.log('Helloooo! first listener');
});
// Second listener
myEmitter.on('event', function secondListener(arg1, arg2) {
  console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
});
// Third listener
myEmitter.on('event', function thirdListener(...args) {
  const parameters = args.join(', ');
  console.log(`event with parameters ${parameters} in third listener`);
});

console.log(myEmitter.listeners('event'));

myEmitter.emit('event', 1, 2, 3, 4, 5);

// Prints:
// [
//   [Function: firstListener],
//   [Function: secondListener],
//   [Function: thirdListener]
// ]
// Helloooo! first listener
// event with parameters 1, 2 in second listener
// event with parameters 1, 2, 3, 4, 5 in third listener
eventNames()

エミッタにリスナーが登録されているイベントを一覧表示する配列を返します。 配列内の値は文字列または Symbols です。

import { EventEmitter } from 'node:events';

const myEE = new EventEmitter();
myEE.on('foo', () => {});
myEE.on('bar', () => {});

const sym = Symbol('symbol');
myEE.on(sym, () => {});

console.log(myEE.eventNames());
// Prints: [ 'foo', 'bar', Symbol(symbol) ]
getEventListeners(EventEmitter<DefaultEventMap> | EventTarget, string | symbol)

という名前 eventNameのイベントのリスナーの配列のコピーを返します。

の場合 EventEmitter、これはエミッタで を呼び出す .listeners のとまったく同じように動作します。

の場合 EventTarget、これはイベント ターゲットのイベント リスナーを取得する唯一の方法です。 これは、デバッグと診断の目的で役立ちます。

import { getEventListeners, EventEmitter } from 'node:events';

{
  const ee = new EventEmitter();
  const listener = () => console.log('Events are fun');
  ee.on('foo', listener);
  console.log(getEventListeners(ee, 'foo')); // [ [Function: listener] ]
}
{
  const et = new EventTarget();
  const listener = () => console.log('Events are fun');
  et.addEventListener('foo', listener);
  console.log(getEventListeners(et, 'foo')); // [ [Function: listener] ]
}
getMaxListeners()

によって設定されるか、既定値が defaultMaxListeners に設定emitter.setMaxListeners(n)されている の現在の最大リスナー値EventEmitterを返します。

getMaxListeners(EventEmitter<DefaultEventMap> | EventTarget)

現在設定されているリスナーの最大量を返します。

s の場合 EventEmitter、これはエミッタで を呼び出す .getMaxListeners のとまったく同じように動作します。

では EventTarget、これはイベント ターゲットの最大イベント リスナーを取得する唯一の方法です。 1 つの EventTarget のイベント ハンドラーの数が最大セットを超えた場合、EventTarget は警告を出力します。

import { getMaxListeners, setMaxListeners, EventEmitter } from 'node:events';

{
  const ee = new EventEmitter();
  console.log(getMaxListeners(ee)); // 10
  setMaxListeners(11, ee);
  console.log(getMaxListeners(ee)); // 11
}
{
  const et = new EventTarget();
  console.log(getMaxListeners(et)); // 10
  setMaxListeners(11, et);
  console.log(getMaxListeners(et)); // 11
}
listenerCount(EventEmitter<DefaultEventMap>, string | symbol)

指定した に登録されている、指定 eventName された emitterのリスナーの数を返すクラス メソッド。

import { EventEmitter, listenerCount } from 'node:events';

const myEmitter = new EventEmitter();
myEmitter.on('event', () => {});
myEmitter.on('event', () => {});
console.log(listenerCount(myEmitter, 'event'));
// Prints: 2
listenerCount<K>(string | symbol, Function)

という名前 eventNameのイベントをリッスンしているリスナーの数を返します。 が指定されている場合 listener 、イベントのリスナーの一覧でリスナーが見つかった回数が返されます。

listeners<K>(string | symbol)

という名前 eventNameのイベントのリスナーの配列のコピーを返します。

server.on('connection', (stream) => {
  console.log('someone connected!');
});
console.log(util.inspect(server.listeners('connection')));
// Prints: [ [Function] ]
off<K>(string | symbol, (args: any[]) => void)

emitter.removeListener()エイリアス。

on(EventEmitter<DefaultEventMap>, string, StaticEventEmitterOptions)
import { on, EventEmitter } from 'node:events';
import process from 'node:process';

const ee = new EventEmitter();

// Emit later on
process.nextTick(() => {
  ee.emit('foo', 'bar');
  ee.emit('foo', 42);
});

for await (const event of on(ee, 'foo')) {
  // The execution of this inner block is synchronous and it
  // processes one event at a time (even with await). Do not use
  // if concurrent execution is required.
  console.log(event); // prints ['bar'] [42]
}
// Unreachable here

イベントを反復処理する を AsyncIterator 返します eventName 。 が を出力'error'すると、 がEventEmitterスローされます。 ループを終了すると、すべてのリスナーが削除されます。 各イテレーションによって返される は value 、出力されたイベント引数で構成される配列です。

AbortSignal 使用して、イベントの待機を取り消すことができます。

import { on, EventEmitter } from 'node:events';
import process from 'node:process';

const ac = new AbortController();

(async () => {
  const ee = new EventEmitter();

  // Emit later on
  process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
  });

  for await (const event of on(ee, 'foo', { signal: ac.signal })) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
  }
  // Unreachable here
})();

process.nextTick(() => ac.abort());
on<K>(string | symbol, (args: any[]) => void)

という名前eventNamelistenerイベントのリスナー配列の末尾に 関数を追加します。 が既に追加されているかどうかを確認 listener するチェックは行われません。 と の同じ組み合わせを渡す複数のeventNamelistener呼び出しでは、 がlistener複数回追加され、呼び出されます。

server.on('connection', (stream) => {
  console.log('someone connected!');
});

呼び出しをチェーンできるように、 への EventEmitter参照を返します。

既定では、イベント リスナーは追加された順序で呼び出されます。 メソッドは emitter.prependListener() 、リスナー配列の先頭にイベント リスナーを追加する代わりに使用できます。

import { EventEmitter } from 'node:events';
const myEE = new EventEmitter();
myEE.on('foo', () => console.log('a'));
myEE.prependListener('foo', () => console.log('b'));
myEE.emit('foo');
// Prints:
//   b
//   a
once(EventEmitter<DefaultEventMap>, string | symbol, StaticEventEmitterOptions)

Promiseが指定されたイベントをEventEmitter出力したときに満たされるか、待機中に が出力'error'された場合に拒否される をEventEmitter作成します。 は Promise 、指定されたイベントに出力されるすべての引数の配列で解決されます。

このメソッドは意図的にジェネリックであり、特別な'error'イベント セマンティクスがなく、イベントをリッスンしない Web プラットフォーム EventTarget インターフェイスで'error'動作します。

import { once, EventEmitter } from 'node:events';
import process from 'node:process';

const ee = new EventEmitter();

process.nextTick(() => {
  ee.emit('myevent', 42);
});

const [value] = await once(ee, 'myevent');
console.log(value);

const err = new Error('kaboom');
process.nextTick(() => {
  ee.emit('error', err);
});

try {
  await once(ee, 'myevent');
} catch (err) {
  console.error('error happened', err);
}

イベントの特別な処理は、 が別の 'error' イベントを待機するために使用される場合 events.once() にのみ使用されます。 を使用して 'error' イベント自体を待機する場合events.once()は、特別な処理を行わずに他の種類のイベントとして扱われます。

import { EventEmitter, once } from 'node:events';

const ee = new EventEmitter();

once(ee, 'error')
  .then(([err]) => console.log('ok', err.message))
  .catch((err) => console.error('error', err.message));

ee.emit('error', new Error('boom'));

// Prints: ok boom

AbortSignal 使用して、イベントの待機を取り消すことができます。

import { EventEmitter, once } from 'node:events';

const ee = new EventEmitter();
const ac = new AbortController();

async function foo(emitter, event, signal) {
  try {
    await once(emitter, event, { signal });
    console.log('event emitted!');
  } catch (error) {
    if (error.name === 'AbortError') {
      console.error('Waiting for the event was canceled!');
    } else {
      console.error('There was an error', error.message);
    }
  }
}

foo(ee, 'foo', ac.signal);
ac.abort(); // Abort waiting for the event
ee.emit('foo'); // Prints: Waiting for the event was canceled!
once(EventTarget, string, StaticEventEmitterOptions)
once<K>(string | symbol, (args: any[]) => void)

という名前eventNameのイベントの 1 回listener限りの関数を追加します。 次回トリガーされると eventName 、このリスナーが削除され、呼び出されます。

server.once('connection', (stream) => {
  console.log('Ah, we have our first user!');
});

呼び出しをチェーンできるように、 への EventEmitter参照を返します。

既定では、イベント リスナーは追加された順序で呼び出されます。 メソッドは emitter.prependOnceListener() 、リスナー配列の先頭にイベント リスナーを追加する代わりに使用できます。

import { EventEmitter } from 'node:events';
const myEE = new EventEmitter();
myEE.once('foo', () => console.log('a'));
myEE.prependOnceListener('foo', () => console.log('b'));
myEE.emit('foo');
// Prints:
//   b
//   a
prependListener<K>(string | symbol, (args: any[]) => void)

という名前eventNamelistenerイベントのリスナー配列の先頭に 関数を追加します。 が既に追加されているかどうかを確認 listener するチェックは行われません。 と の同じ組み合わせを渡す複数のeventNamelistener呼び出しでは、 がlistener複数回追加され、呼び出されます。

server.prependListener('connection', (stream) => {
  console.log('someone connected!');
});

呼び出しをチェーンできるように、 への EventEmitter参照を返します。

prependOnceListener<K>(string | symbol, (args: any[]) => void)

という名前eventNameのイベントの 1 回listener限りの関数をリスナー配列の先頭に追加します。 次回 eventName トリガーされると、このリスナーが削除され、呼び出されます。

server.prependOnceListener('connection', (stream) => {
  console.log('Ah, we have our first user!');
});

呼び出しをチェーンできるように、 への EventEmitter参照を返します。

rawListeners<K>(string | symbol)

という名前 eventNameのイベントのリスナーの配列のコピーを返します。これには、ラッパー (によって .once()作成されたものなど) も含まれます。

import { EventEmitter } from 'node:events';
const emitter = new EventEmitter();
emitter.once('log', () => console.log('log once'));

// Returns a new Array with a function `onceWrapper` which has a property
// `listener` which contains the original listener bound above
const listeners = emitter.rawListeners('log');
const logFnWrapper = listeners[0];

// Logs "log once" to the console and does not unbind the `once` event
logFnWrapper.listener();

// Logs "log once" to the console and removes the listener
logFnWrapper();

emitter.on('log', () => console.log('log persistently'));
// Will return a new Array with a single function bound by `.on()` above
const newListeners = emitter.rawListeners('log');

// Logs "log persistently" twice
newListeners[0]();
emitter.emit('log');
removeAllListeners(string | symbol)

すべてのリスナー、または指定した のリスナーを削除します eventName

特に、インスタンスが他のコンポーネントまたはモジュール (ソケットやファイル ストリームなど) によって作成された場合 EventEmitter に、コード内の他の場所に追加されたリスナーを削除するのは不適切な方法です。

呼び出しをチェーンできるように、 への EventEmitter参照を返します。

removeListener<K>(string | symbol, (args: any[]) => void)

という名前eventNameのイベントのリスナー配列から指定された を削除しますlistener

const callback = (stream) => {
  console.log('someone connected!');
};
server.on('connection', callback);
// ...
server.removeListener('connection', callback);

removeListener() は、リスナー配列からリスナーのインスタンスを最大で 1 つ削除します。 指定した eventNameのリスナー配列に 1 つのリスナーが複数回追加されている場合は、 removeListener() 各インスタンスを削除するために複数回呼び出す必要があります。

イベントが生成されると、生成時にそれにアタッチされているすべてのリスナーが順番に呼び出されます。 これは、 removeListener() または removeAllListeners() を出力 した後 、最後のリスナーの実行が完了する 前に を呼び出しても、進行中からemit() 削除されないことを意味します。 後続のイベントは想定どおりに動作します。

import { EventEmitter } from 'node:events';
class MyEmitter extends EventEmitter {}
const myEmitter = new MyEmitter();

const callbackA = () => {
  console.log('A');
  myEmitter.removeListener('event', callbackB);
};

const callbackB = () => {
  console.log('B');
};

myEmitter.on('event', callbackA);

myEmitter.on('event', callbackB);

// callbackA removes listener callbackB but it will still be called.
// Internal listener array at time of emit [callbackA, callbackB]
myEmitter.emit('event');
// Prints:
//   A
//   B

// callbackB is now removed.
// Internal listener array [callbackA]
myEmitter.emit('event');
// Prints:
//   A

リスナーは内部配列を使用して管理されるため、これを呼び出すと、リスナーが削除された に登録されたすべてのリスナーの位置インデックスが変更されます。 これは、リスナーが呼び出される順序には影響しませんが、 メソッドによって emitter.listeners() 返されるリスナー配列のコピーを再作成する必要があることを意味します。

(次の例のように) removeListener() 1 つのイベントに対して 1 つの関数がハンドラーとして複数回追加されると、最後に追加されたインスタンスが削除されます。 この例では、リスナーは once('ping') 削除されます。

import { EventEmitter } from 'node:events';
const ee = new EventEmitter();

function pong() {
  console.log('pong');
}

ee.on('ping', pong);
ee.once('ping', pong);
ee.removeListener('ping', pong);

ee.emit('ping');
ee.emit('ping');

呼び出しをチェーンできるように、 への EventEmitter参照を返します。

setMaxListeners(number)

既定 EventEmitterでは、 は、特定のイベントに対して複数 10 のリスナーが追加された場合に警告を出力します。 これは、メモリ リークを見つけるのに役立つ便利な既定値です。 メソッドを emitter.setMaxListeners() 使用すると、この特定 EventEmitter のインスタンスの制限を変更できます。 値を (または0) にInfinity設定して、リスナーの数を無制限に示すことができます。

呼び出しをチェーンできるように、 への EventEmitter参照を返します。

setMaxListeners(number, (EventEmitter<DefaultEventMap> | EventTarget)[])
import { setMaxListeners, EventEmitter } from 'node:events';

const target = new EventTarget();
const emitter = new EventEmitter();

setMaxListeners(5, target, emitter);
[captureRejectionSymbol]<K>(Error, string | symbol, AnyRest)

継承されたプロパティの詳細

captureRejections

値: ブール値

すべての新しいEventEmitterオブジェクトの既定captureRejectionsのオプションを変更します。

static captureRejections: boolean

プロパティ値

boolean

継承元 EventEmitter.captureRejections

captureRejectionSymbol

値: Symbol.for('nodejs.rejection')

カスタム rejection handlerを記述する方法を参照してください。

static captureRejectionSymbol: typeof captureRejectionSymbol

プロパティ値

typeof captureRejectionSymbol

継承元 EventEmitter.captureRejectionSymbol

defaultMaxListeners

既定では、任意の 1 つのイベントに対して最大の 10 リスナーを登録できます。 この制限は、 メソッドを使用して個々 EventEmitter のインスタンスに emitter.setMaxListeners(n) 対して変更できます。 すべてのEventEmitterインスタンスの既定値を変更するには、 プロパティをevents.defaultMaxListeners使用できます。 この値が正の数値でない場合は、 RangeError がスローされます。

変更は変更前に作成されたものも含め、すべてのEventEmitterインスタンスに影響するため、 を設定events.defaultMaxListenersするときは注意してください。 ただし、 の呼び出し emitter.setMaxListeners(n) は 引き続き よりも events.defaultMaxListeners優先されます。

これはハードな制限ではありません。 EventEmitterインスタンスにより多くのリスナーを追加できますが、"EventEmitter メモリ リークの可能性" が検出されたことを示すトレース警告が stderr に出力されます。 単一 EventEmitterの の 場合、 emitter.getMaxListeners() メソッドと emitter.setMaxListeners() メソッドを使用して、この警告を一時的に回避できます。

import { EventEmitter } from 'node:events';
const emitter = new EventEmitter();
emitter.setMaxListeners(emitter.getMaxListeners() + 1);
emitter.once('event', () => {
  // do stuff
  emitter.setMaxListeners(Math.max(emitter.getMaxListeners() - 1, 0));
});

--trace-warningsコマンド ライン フラグを使用して、このような警告のスタック トレースを表示できます。

生成された警告は、 を使用してprocess.on('warning')検査でき、イベント エミッタ インスタンス、イベントの名前、アタッチされたリスナーの数をそれぞれ参照する追加emittertypecountの 、、および プロパティを持つことになります。 その name プロパティは に 'MaxListenersExceededWarning'設定されます。

static defaultMaxListeners: number

プロパティ値

number

継承元 EventEmitter.defaultMaxListeners

errorMonitor

このシンボルは、イベントの監視 'error' 専用のリスナーをインストールするために使用する必要があります。 このシンボルを使用してインストールされたリスナーは、通常 'error' のリスナーが呼び出される前に呼び出されます。

このシンボルを使用してリスナーをインストールしても、イベントが生成された後 'error' の動作は変更されません。 そのため、通常 'error' のリスナーがインストールされていない場合でも、プロセスはクラッシュします。

static errorMonitor: typeof errorMonitor

プロパティ値

typeof errorMonitor

継承元 EventEmitter.errorMonitor

継承済みメソッドの詳細

addAbortListener(AbortSignal, (event: Event) => void)

指定signalされた でイベントを abort 1 回リッスンします。

中止シグナルでイベントを abort リッスンすることは安全ではなく、シグナルを持つ別のサード パーティが を呼び出 e.stopImmediatePropagation()すことができるため、リソース リークにつながる可能性があります。 残念ながら、Node.js は Web 標準に違反するため、これを変更できません。 また、元の API を使用すると、リスナーの削除を忘れやすくなります。

この API では、リスナーの実行を妨げるようなイベントstopImmediatePropagationをリッスンすることで、これら 2 つの問題を解決することで、Node.js API で を安全に使用AbortSignalできます。

より簡単に登録を解除できるように、破棄可能な を返します。

import { addAbortListener } from 'node:events';

function example(signal) {
  let disposable;
  try {
    signal.addEventListener('abort', (e) => e.stopImmediatePropagation());
    disposable = addAbortListener(signal, (e) => {
      // Do something when signal is aborted.
    });
  } finally {
    disposable?.[Symbol.dispose]();
  }
}
static function addAbortListener(signal: AbortSignal, resource: (event: Event) => void): Disposable

パラメーター

signal

AbortSignal

resource

(event: Event) => void

戻り値

Disposable

リスナーを削除する abort 破棄可能。

継承元 EventEmitter.addAbortListener

addListener<K>(string | symbol, (args: any[]) => void)

emitter.on(eventName, listener)エイリアス。

function addListener<K>(eventName: string | symbol, listener: (args: any[]) => void): Amqp

パラメーター

eventName

string | symbol

listener

(args: any[]) => void

戻り値

継承元 EventEmitter.addListener

emit<K>(string | symbol, AnyRest)

という名前 eventNameのイベントに登録されている各リスナーを、登録された順序で同期的に呼び出し、指定された引数をそれぞれに渡します。

イベントに true リスナーがある場合は を false 返します。それ以外の場合は を返します。

import { EventEmitter } from 'node:events';
const myEmitter = new EventEmitter();

// First listener
myEmitter.on('event', function firstListener() {
  console.log('Helloooo! first listener');
});
// Second listener
myEmitter.on('event', function secondListener(arg1, arg2) {
  console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
});
// Third listener
myEmitter.on('event', function thirdListener(...args) {
  const parameters = args.join(', ');
  console.log(`event with parameters ${parameters} in third listener`);
});

console.log(myEmitter.listeners('event'));

myEmitter.emit('event', 1, 2, 3, 4, 5);

// Prints:
// [
//   [Function: firstListener],
//   [Function: secondListener],
//   [Function: thirdListener]
// ]
// Helloooo! first listener
// event with parameters 1, 2 in second listener
// event with parameters 1, 2, 3, 4, 5 in third listener
function emit<K>(eventName: string | symbol, args: AnyRest): boolean

パラメーター

eventName

string | symbol

args

AnyRest

戻り値

boolean

継承元 EventEmitter.emit

eventNames()

エミッタにリスナーが登録されているイベントを一覧表示する配列を返します。 配列内の値は文字列または Symbols です。

import { EventEmitter } from 'node:events';

const myEE = new EventEmitter();
myEE.on('foo', () => {});
myEE.on('bar', () => {});

const sym = Symbol('symbol');
myEE.on(sym, () => {});

console.log(myEE.eventNames());
// Prints: [ 'foo', 'bar', Symbol(symbol) ]
function eventNames(): (string | symbol)[]

戻り値

(string | symbol)[]

継承元 EventEmitter.eventNames

getEventListeners(EventEmitter<DefaultEventMap> | EventTarget, string | symbol)

という名前 eventNameのイベントのリスナーの配列のコピーを返します。

の場合 EventEmitter、これはエミッタで を呼び出す .listeners のとまったく同じように動作します。

の場合 EventTarget、これはイベント ターゲットのイベント リスナーを取得する唯一の方法です。 これは、デバッグと診断の目的で役立ちます。

import { getEventListeners, EventEmitter } from 'node:events';

{
  const ee = new EventEmitter();
  const listener = () => console.log('Events are fun');
  ee.on('foo', listener);
  console.log(getEventListeners(ee, 'foo')); // [ [Function: listener] ]
}
{
  const et = new EventTarget();
  const listener = () => console.log('Events are fun');
  et.addEventListener('foo', listener);
  console.log(getEventListeners(et, 'foo')); // [ [Function: listener] ]
}
static function getEventListeners(emitter: EventEmitter<DefaultEventMap> | EventTarget, name: string | symbol): Function[]

パラメーター

emitter

EventEmitter<DefaultEventMap> | EventTarget

name

string | symbol

戻り値

Function[]

継承元 EventEmitter.getEventListeners

getMaxListeners()

によって設定されるか、既定値が defaultMaxListeners に設定emitter.setMaxListeners(n)されている の現在の最大リスナー値EventEmitterを返します。

function getMaxListeners(): number

戻り値

number

継承元 EventEmitter.getMaxListeners

getMaxListeners(EventEmitter<DefaultEventMap> | EventTarget)

現在設定されているリスナーの最大量を返します。

s の場合 EventEmitter、これはエミッタで を呼び出す .getMaxListeners のとまったく同じように動作します。

では EventTarget、これはイベント ターゲットの最大イベント リスナーを取得する唯一の方法です。 1 つの EventTarget のイベント ハンドラーの数が最大セットを超えた場合、EventTarget は警告を出力します。

import { getMaxListeners, setMaxListeners, EventEmitter } from 'node:events';

{
  const ee = new EventEmitter();
  console.log(getMaxListeners(ee)); // 10
  setMaxListeners(11, ee);
  console.log(getMaxListeners(ee)); // 11
}
{
  const et = new EventTarget();
  console.log(getMaxListeners(et)); // 10
  setMaxListeners(11, et);
  console.log(getMaxListeners(et)); // 11
}
static function getMaxListeners(emitter: EventEmitter<DefaultEventMap> | EventTarget): number

パラメーター

emitter

EventEmitter<DefaultEventMap> | EventTarget

戻り値

number

継承元 EventEmitter.getMaxListeners

listenerCount(EventEmitter<DefaultEventMap>, string | symbol)

警告

この API は非推奨になりました。

Since v3.2.0 - Use listenerCount instead.

指定した に登録されている、指定 eventName された emitterのリスナーの数を返すクラス メソッド。

import { EventEmitter, listenerCount } from 'node:events';

const myEmitter = new EventEmitter();
myEmitter.on('event', () => {});
myEmitter.on('event', () => {});
console.log(listenerCount(myEmitter, 'event'));
// Prints: 2
static function listenerCount(emitter: EventEmitter<DefaultEventMap>, eventName: string | symbol): number

パラメーター

emitter

EventEmitter<DefaultEventMap>

クエリを実行するエミッター

eventName

string | symbol

イベント名

戻り値

number

継承元 EventEmitter.listenerCount

listenerCount<K>(string | symbol, Function)

という名前 eventNameのイベントをリッスンしているリスナーの数を返します。 が指定されている場合 listener 、イベントのリスナーの一覧でリスナーが見つかった回数が返されます。

function listenerCount<K>(eventName: string | symbol, listener?: Function): number

パラメーター

eventName

string | symbol

リッスンするイベントの名前

listener

Function

イベント ハンドラー関数

戻り値

number

継承元 EventEmitter.listenerCount

listeners<K>(string | symbol)

という名前 eventNameのイベントのリスナーの配列のコピーを返します。

server.on('connection', (stream) => {
  console.log('someone connected!');
});
console.log(util.inspect(server.listeners('connection')));
// Prints: [ [Function] ]
function listeners<K>(eventName: string | symbol): Function[]

パラメーター

eventName

string | symbol

戻り値

Function[]

継承元 EventEmitter.listeners

off<K>(string | symbol, (args: any[]) => void)

emitter.removeListener()エイリアス。

function off<K>(eventName: string | symbol, listener: (args: any[]) => void): Amqp

パラメーター

eventName

string | symbol

listener

(args: any[]) => void

戻り値

継承元 EventEmitter.off

on(EventEmitter<DefaultEventMap>, string, StaticEventEmitterOptions)

import { on, EventEmitter } from 'node:events';
import process from 'node:process';

const ee = new EventEmitter();

// Emit later on
process.nextTick(() => {
  ee.emit('foo', 'bar');
  ee.emit('foo', 42);
});

for await (const event of on(ee, 'foo')) {
  // The execution of this inner block is synchronous and it
  // processes one event at a time (even with await). Do not use
  // if concurrent execution is required.
  console.log(event); // prints ['bar'] [42]
}
// Unreachable here

イベントを反復処理する を AsyncIterator 返します eventName 。 が を出力'error'すると、 がEventEmitterスローされます。 ループを終了すると、すべてのリスナーが削除されます。 各イテレーションによって返される は value 、出力されたイベント引数で構成される配列です。

AbortSignal 使用して、イベントの待機を取り消すことができます。

import { on, EventEmitter } from 'node:events';
import process from 'node:process';

const ac = new AbortController();

(async () => {
  const ee = new EventEmitter();

  // Emit later on
  process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
  });

  for await (const event of on(ee, 'foo', { signal: ac.signal })) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
  }
  // Unreachable here
})();

process.nextTick(() => ac.abort());
static function on(emitter: EventEmitter<DefaultEventMap>, eventName: string, options?: StaticEventEmitterOptions): AsyncIterableIterator<any>

パラメーター

emitter

EventEmitter<DefaultEventMap>

eventName

string

リッスンするイベントの名前

options

StaticEventEmitterOptions

戻り値

AsyncIterableIterator<any>

AsyncIteratorによって生成されるイベントをeventName反復処理する 。emitter

継承元 EventEmitter.on

on<K>(string | symbol, (args: any[]) => void)

という名前eventNamelistenerイベントのリスナー配列の末尾に 関数を追加します。 が既に追加されているかどうかを確認 listener するチェックは行われません。 と の同じ組み合わせを渡す複数のeventNamelistener呼び出しでは、 がlistener複数回追加され、呼び出されます。

server.on('connection', (stream) => {
  console.log('someone connected!');
});

呼び出しをチェーンできるように、 への EventEmitter参照を返します。

既定では、イベント リスナーは追加された順序で呼び出されます。 メソッドは emitter.prependListener() 、リスナー配列の先頭にイベント リスナーを追加する代わりに使用できます。

import { EventEmitter } from 'node:events';
const myEE = new EventEmitter();
myEE.on('foo', () => console.log('a'));
myEE.prependListener('foo', () => console.log('b'));
myEE.emit('foo');
// Prints:
//   b
//   a
function on<K>(eventName: string | symbol, listener: (args: any[]) => void): Amqp

パラメーター

eventName

string | symbol

イベントの名前です。

listener

(args: any[]) => void

コールバック関数

戻り値

継承元 EventEmitter.on

once(EventEmitter<DefaultEventMap>, string | symbol, StaticEventEmitterOptions)

Promiseが指定されたイベントをEventEmitter出力したときに満たされるか、待機中に が出力'error'された場合に拒否される をEventEmitter作成します。 は Promise 、指定されたイベントに出力されるすべての引数の配列で解決されます。

このメソッドは意図的にジェネリックであり、特別な'error'イベント セマンティクスがなく、イベントをリッスンしない Web プラットフォーム EventTarget インターフェイスで'error'動作します。

import { once, EventEmitter } from 'node:events';
import process from 'node:process';

const ee = new EventEmitter();

process.nextTick(() => {
  ee.emit('myevent', 42);
});

const [value] = await once(ee, 'myevent');
console.log(value);

const err = new Error('kaboom');
process.nextTick(() => {
  ee.emit('error', err);
});

try {
  await once(ee, 'myevent');
} catch (err) {
  console.error('error happened', err);
}

イベントの特別な処理は、 が別の 'error' イベントを待機するために使用される場合 events.once() にのみ使用されます。 を使用して 'error' イベント自体を待機する場合events.once()は、特別な処理を行わずに他の種類のイベントとして扱われます。

import { EventEmitter, once } from 'node:events';

const ee = new EventEmitter();

once(ee, 'error')
  .then(([err]) => console.log('ok', err.message))
  .catch((err) => console.error('error', err.message));

ee.emit('error', new Error('boom'));

// Prints: ok boom

AbortSignal 使用して、イベントの待機を取り消すことができます。

import { EventEmitter, once } from 'node:events';

const ee = new EventEmitter();
const ac = new AbortController();

async function foo(emitter, event, signal) {
  try {
    await once(emitter, event, { signal });
    console.log('event emitted!');
  } catch (error) {
    if (error.name === 'AbortError') {
      console.error('Waiting for the event was canceled!');
    } else {
      console.error('There was an error', error.message);
    }
  }
}

foo(ee, 'foo', ac.signal);
ac.abort(); // Abort waiting for the event
ee.emit('foo'); // Prints: Waiting for the event was canceled!
static function once(emitter: EventEmitter<DefaultEventMap>, eventName: string | symbol, options?: StaticEventEmitterOptions): Promise<any[]>

パラメーター

emitter

EventEmitter<DefaultEventMap>

eventName

string | symbol

options

StaticEventEmitterOptions

戻り値

Promise<any[]>

継承元 EventEmitter.once

once(EventTarget, string, StaticEventEmitterOptions)

static function once(emitter: EventTarget, eventName: string, options?: StaticEventEmitterOptions): Promise<any[]>

パラメーター

emitter

EventTarget

eventName

string

options

StaticEventEmitterOptions

戻り値

Promise<any[]>

継承元 EventEmitter.once

once<K>(string | symbol, (args: any[]) => void)

という名前eventNameのイベントの 1 回listener限りの関数を追加します。 次回トリガーされると eventName 、このリスナーが削除され、呼び出されます。

server.once('connection', (stream) => {
  console.log('Ah, we have our first user!');
});

呼び出しをチェーンできるように、 への EventEmitter参照を返します。

既定では、イベント リスナーは追加された順序で呼び出されます。 メソッドは emitter.prependOnceListener() 、リスナー配列の先頭にイベント リスナーを追加する代わりに使用できます。

import { EventEmitter } from 'node:events';
const myEE = new EventEmitter();
myEE.once('foo', () => console.log('a'));
myEE.prependOnceListener('foo', () => console.log('b'));
myEE.emit('foo');
// Prints:
//   b
//   a
function once<K>(eventName: string | symbol, listener: (args: any[]) => void): Amqp

パラメーター

eventName

string | symbol

イベントの名前です。

listener

(args: any[]) => void

コールバック関数

戻り値

継承元 EventEmitter.once

prependListener<K>(string | symbol, (args: any[]) => void)

という名前eventNamelistenerイベントのリスナー配列の先頭に 関数を追加します。 が既に追加されているかどうかを確認 listener するチェックは行われません。 と の同じ組み合わせを渡す複数のeventNamelistener呼び出しでは、 がlistener複数回追加され、呼び出されます。

server.prependListener('connection', (stream) => {
  console.log('someone connected!');
});

呼び出しをチェーンできるように、 への EventEmitter参照を返します。

function prependListener<K>(eventName: string | symbol, listener: (args: any[]) => void): Amqp

パラメーター

eventName

string | symbol

イベントの名前です。

listener

(args: any[]) => void

コールバック関数

戻り値

継承元 EventEmitter.prependListener

prependOnceListener<K>(string | symbol, (args: any[]) => void)

という名前eventNameのイベントの 1 回listener限りの関数をリスナー配列の先頭に追加します。 次回 eventName トリガーされると、このリスナーが削除され、呼び出されます。

server.prependOnceListener('connection', (stream) => {
  console.log('Ah, we have our first user!');
});

呼び出しをチェーンできるように、 への EventEmitter参照を返します。

function prependOnceListener<K>(eventName: string | symbol, listener: (args: any[]) => void): Amqp

パラメーター

eventName

string | symbol

イベントの名前です。

listener

(args: any[]) => void

コールバック関数

戻り値

継承元 EventEmitter.prependOnceListener

rawListeners<K>(string | symbol)

という名前 eventNameのイベントのリスナーの配列のコピーを返します。これには、ラッパー (によって .once()作成されたものなど) も含まれます。

import { EventEmitter } from 'node:events';
const emitter = new EventEmitter();
emitter.once('log', () => console.log('log once'));

// Returns a new Array with a function `onceWrapper` which has a property
// `listener` which contains the original listener bound above
const listeners = emitter.rawListeners('log');
const logFnWrapper = listeners[0];

// Logs "log once" to the console and does not unbind the `once` event
logFnWrapper.listener();

// Logs "log once" to the console and removes the listener
logFnWrapper();

emitter.on('log', () => console.log('log persistently'));
// Will return a new Array with a single function bound by `.on()` above
const newListeners = emitter.rawListeners('log');

// Logs "log persistently" twice
newListeners[0]();
emitter.emit('log');
function rawListeners<K>(eventName: string | symbol): Function[]

パラメーター

eventName

string | symbol

戻り値

Function[]

継承元 EventEmitter.rawListeners

removeAllListeners(string | symbol)

すべてのリスナー、または指定した のリスナーを削除します eventName

特に、インスタンスが他のコンポーネントまたはモジュール (ソケットやファイル ストリームなど) によって作成された場合 EventEmitter に、コード内の他の場所に追加されたリスナーを削除するのは不適切な方法です。

呼び出しをチェーンできるように、 への EventEmitter参照を返します。

function removeAllListeners(eventName?: string | symbol): Amqp

パラメーター

eventName

string | symbol

戻り値

継承元 EventEmitter.removeAllListeners

removeListener<K>(string | symbol, (args: any[]) => void)

という名前eventNameのイベントのリスナー配列から指定された を削除しますlistener

const callback = (stream) => {
  console.log('someone connected!');
};
server.on('connection', callback);
// ...
server.removeListener('connection', callback);

removeListener() は、リスナー配列からリスナーのインスタンスを最大で 1 つ削除します。 指定した eventNameのリスナー配列に 1 つのリスナーが複数回追加されている場合は、 removeListener() 各インスタンスを削除するために複数回呼び出す必要があります。

イベントが生成されると、生成時にそれにアタッチされているすべてのリスナーが順番に呼び出されます。 これは、 removeListener() または removeAllListeners() を出力 した後 、最後のリスナーの実行が完了する 前に を呼び出しても、進行中からemit() 削除されないことを意味します。 後続のイベントは想定どおりに動作します。

import { EventEmitter } from 'node:events';
class MyEmitter extends EventEmitter {}
const myEmitter = new MyEmitter();

const callbackA = () => {
  console.log('A');
  myEmitter.removeListener('event', callbackB);
};

const callbackB = () => {
  console.log('B');
};

myEmitter.on('event', callbackA);

myEmitter.on('event', callbackB);

// callbackA removes listener callbackB but it will still be called.
// Internal listener array at time of emit [callbackA, callbackB]
myEmitter.emit('event');
// Prints:
//   A
//   B

// callbackB is now removed.
// Internal listener array [callbackA]
myEmitter.emit('event');
// Prints:
//   A

リスナーは内部配列を使用して管理されるため、これを呼び出すと、リスナーが削除された に登録されたすべてのリスナーの位置インデックスが変更されます。 これは、リスナーが呼び出される順序には影響しませんが、 メソッドによって emitter.listeners() 返されるリスナー配列のコピーを再作成する必要があることを意味します。

(次の例のように) removeListener() 1 つのイベントに対して 1 つの関数がハンドラーとして複数回追加されると、最後に追加されたインスタンスが削除されます。 この例では、リスナーは once('ping') 削除されます。

import { EventEmitter } from 'node:events';
const ee = new EventEmitter();

function pong() {
  console.log('pong');
}

ee.on('ping', pong);
ee.once('ping', pong);
ee.removeListener('ping', pong);

ee.emit('ping');
ee.emit('ping');

呼び出しをチェーンできるように、 への EventEmitter参照を返します。

function removeListener<K>(eventName: string | symbol, listener: (args: any[]) => void): Amqp

パラメーター

eventName

string | symbol

listener

(args: any[]) => void

戻り値

継承元 EventEmitter.removeListener

setMaxListeners(number)

既定 EventEmitterでは、 は、特定のイベントに対して複数 10 のリスナーが追加された場合に警告を出力します。 これは、メモリ リークを見つけるのに役立つ便利な既定値です。 メソッドを emitter.setMaxListeners() 使用すると、この特定 EventEmitter のインスタンスの制限を変更できます。 値を (または0) にInfinity設定して、リスナーの数を無制限に示すことができます。

呼び出しをチェーンできるように、 への EventEmitter参照を返します。

function setMaxListeners(n: number): Amqp

パラメーター

n

number

戻り値

継承元 EventEmitter.setMaxListeners

setMaxListeners(number, (EventEmitter<DefaultEventMap> | EventTarget)[])

import { setMaxListeners, EventEmitter } from 'node:events';

const target = new EventTarget();
const emitter = new EventEmitter();

setMaxListeners(5, target, emitter);
static function setMaxListeners(n?: number, eventTargets: (EventEmitter<DefaultEventMap> | EventTarget)[])

パラメーター

n

number

負以外の数値。 イベントあたりの EventTarget リスナーの最大数。

eventTargets

(EventEmitter<DefaultEventMap> | EventTarget)[]

継承元 EventEmitter.setMaxListeners

[captureRejectionSymbol]<K>(Error, string | symbol, AnyRest)

function [captureRejectionSymbol]<K>(error: Error, event: string | symbol, args: AnyRest)

パラメーター

error

Error

event

string | symbol

args

AnyRest

継承元 EventEmitter.__@captureRejectionSymbol@115