DeviceTransport interface

Extends

EventEmitter

Методы

abandon(Message, (err?: Error, results?: MessageAbandoned) => void)
complete(Message, (err?: Error, result?: MessageCompleted) => void)
connect((err?: Error, result?: Connected) => void)
disableC2D((err?: Error) => void)
disableInputMessages((err?: Error) => void)
disableMethods((err?: Error) => void)
disableTwinDesiredPropertiesUpdates((err?: Error) => void)
disconnect((err?: Error, result?: Disconnected) => void)
enableC2D((err?: Error) => void)
enableInputMessages((err?: Error) => void)
enableMethods((err?: Error) => void)
enableTwinDesiredPropertiesUpdates((err?: Error) => void)
getTwin((err?: Error, twin?: TwinProperties) => void)
on("connected", () => void)
on("disconnect", (err?: Error) => void)
on("error", (err: Error) => void)
on("inputMessage", (inputName: string, msg: Message) => void)
on("message", (msg: Message) => void)
on("twinDesiredPropertiesUpdate", (desiredProps: any) => void)
onDeviceMethod(string, (request: MethodMessage, response: DeviceMethodResponse) => void)
reject(Message, (err?: Error, results?: MessageRejected) => void)
sendEvent(Message, (err?: Error, result?: MessageEnqueued) => void)
sendEventBatch(Message[], (err?: Error, result?: MessageEnqueued) => void)
sendMethodResponse(DeviceMethodResponse, (err?: Error, result?: any) => void)
sendOutputEvent(string, Message, (err?: Error, result?: MessageEnqueued) => void)
sendOutputEventBatch(string, Message[], (err?: Error, result?: MessageEnqueued) => void)
setOptions(DeviceClientOptions, (err?: Error, result?: TransportConfigured) => void)
updateSharedAccessSignature(string, (err?: Error, result?: SharedAccessSignatureUpdated) => void)
updateTwinReportedProperties(any, (err?: Error) => void)

Наследуемые методы

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) ]
getMaxListeners()

Возвращает текущее максимальное значение прослушивателя для EventEmitter , которое имеет emitter.setMaxListeners(n) значение или по умолчанию имеет значение defaultMaxListeners.

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().

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

Добавляет одноразовуюlistener функцию для события с именем eventName. При следующем 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)

Добавляет функцию в listenerначало массива прослушивателей для события с именем eventName. Проверки, чтобы убедиться, listener что объект уже добавлен, не выполняется. Несколько вызовов, передаваемых одинаковое eventName сочетание и listener , приведут к добавлению listener и вызову несколько раз.

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

Возвращает ссылку на EventEmitter, чтобы вызовы можно было связать в цепочку.

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

Добавляет одноразовуюlistener функцию для события с именем eventName в начало массива прослушивателей. При следующем 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)

Удаляет указанный listener объект из массива прослушивателя для события с именем eventName.

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

removeListener() удалит не более одного экземпляра прослушивателя из массива прослушивателя. Если какой-либо отдельный прослушиватель был добавлен несколько раз в массив прослушивателя для указанного eventName, то 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() будет удален последний добавленный экземпляр. В этом примере 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)

По умолчанию EventEmitters выводит предупреждение, если для определенного события добавляется больше 10 прослушивателей. Это полезное значение по умолчанию, помогающее найти утечки памяти. Метод emitter.setMaxListeners() позволяет изменить ограничение для этого конкретного экземпляра EventEmitter . Чтобы указать неограниченное количество прослушивателей, можно задать Infinity значение (или 0).

Возвращает ссылку на EventEmitter, чтобы вызовы можно было связать в цепочку.

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

Сведения о методе

abandon(Message, (err?: Error, results?: MessageAbandoned) => void)

function abandon(message: Message, done: (err?: Error, results?: MessageAbandoned) => void)

Параметры

message
Message
done

(err?: Error, results?: MessageAbandoned) => void

complete(Message, (err?: Error, result?: MessageCompleted) => void)

function complete(message: Message, done: (err?: Error, result?: MessageCompleted) => void)

Параметры

message
Message
done

(err?: Error, result?: MessageCompleted) => void

connect((err?: Error, result?: Connected) => void)

function connect(done: (err?: Error, result?: Connected) => void)

Параметры

done

(err?: Error, result?: Connected) => void

disableC2D((err?: Error) => void)

function disableC2D(callback: (err?: Error) => void)

Параметры

callback

(err?: Error) => void

disableInputMessages((err?: Error) => void)

function disableInputMessages(callback: (err?: Error) => void)

Параметры

callback

(err?: Error) => void

disableMethods((err?: Error) => void)

function disableMethods(callback: (err?: Error) => void)

Параметры

callback

(err?: Error) => void

disableTwinDesiredPropertiesUpdates((err?: Error) => void)

function disableTwinDesiredPropertiesUpdates(callback: (err?: Error) => void)

Параметры

callback

(err?: Error) => void

disconnect((err?: Error, result?: Disconnected) => void)

function disconnect(done: (err?: Error, result?: Disconnected) => void)

Параметры

done

(err?: Error, result?: Disconnected) => void

enableC2D((err?: Error) => void)

function enableC2D(callback: (err?: Error) => void)

Параметры

callback

(err?: Error) => void

enableInputMessages((err?: Error) => void)

function enableInputMessages(callback: (err?: Error) => void)

Параметры

callback

(err?: Error) => void

enableMethods((err?: Error) => void)

function enableMethods(callback: (err?: Error) => void)

Параметры

callback

(err?: Error) => void

enableTwinDesiredPropertiesUpdates((err?: Error) => void)

function enableTwinDesiredPropertiesUpdates(callback: (err?: Error) => void)

Параметры

callback

(err?: Error) => void

getTwin((err?: Error, twin?: TwinProperties) => void)

function getTwin(callback: (err?: Error, twin?: TwinProperties) => void)

Параметры

callback

(err?: Error, twin?: TwinProperties) => void

on("connected", () => void)

function on(type: "connected", func: () => void): DeviceTransport

Параметры

type

"connected"

func

() => void

Возвращаемое значение

on("disconnect", (err?: Error) => void)

function on(type: "disconnect", func: (err?: Error) => void): DeviceTransport

Параметры

type

"disconnect"

func

(err?: Error) => void

Возвращаемое значение

on("error", (err: Error) => void)

function on(type: "error", func: (err: Error) => void): DeviceTransport

Параметры

type

"error"

func

(err: Error) => void

Возвращаемое значение

on("inputMessage", (inputName: string, msg: Message) => void)

function on(type: "inputMessage", func: (inputName: string, msg: Message) => void): DeviceTransport

Параметры

type

"inputMessage"

func

(inputName: string, msg: Message) => void

Возвращаемое значение

on("message", (msg: Message) => void)

function on(type: "message", func: (msg: Message) => void): DeviceTransport

Параметры

type

"message"

func

(msg: Message) => void

Возвращаемое значение

on("twinDesiredPropertiesUpdate", (desiredProps: any) => void)

function on(type: "twinDesiredPropertiesUpdate", func: (desiredProps: any) => void): DeviceTransport

Параметры

type

"twinDesiredPropertiesUpdate"

func

(desiredProps: any) => void

Возвращаемое значение

onDeviceMethod(string, (request: MethodMessage, response: DeviceMethodResponse) => void)

function onDeviceMethod(methodName: string, methodCallback: (request: MethodMessage, response: DeviceMethodResponse) => void)

Параметры

methodName

string

methodCallback

(request: MethodMessage, response: DeviceMethodResponse) => void

reject(Message, (err?: Error, results?: MessageRejected) => void)

function reject(message: Message, done: (err?: Error, results?: MessageRejected) => void)

Параметры

message
Message
done

(err?: Error, results?: MessageRejected) => void

sendEvent(Message, (err?: Error, result?: MessageEnqueued) => void)

function sendEvent(message: Message, done: (err?: Error, result?: MessageEnqueued) => void)

Параметры

message
Message
done

(err?: Error, result?: MessageEnqueued) => void

sendEventBatch(Message[], (err?: Error, result?: MessageEnqueued) => void)

function sendEventBatch(messages: Message[], done: (err?: Error, result?: MessageEnqueued) => void)

Параметры

messages

Message[]

done

(err?: Error, result?: MessageEnqueued) => void

sendMethodResponse(DeviceMethodResponse, (err?: Error, result?: any) => void)

function sendMethodResponse(response: DeviceMethodResponse, done?: (err?: Error, result?: any) => void)

Параметры

done

(err?: Error, result?: any) => void

sendOutputEvent(string, Message, (err?: Error, result?: MessageEnqueued) => void)

function sendOutputEvent(outputName: string, message: Message, done: (err?: Error, result?: MessageEnqueued) => void)

Параметры

outputName

string

message
Message
done

(err?: Error, result?: MessageEnqueued) => void

sendOutputEventBatch(string, Message[], (err?: Error, result?: MessageEnqueued) => void)

function sendOutputEventBatch(outputName: string, messages: Message[], done: (err?: Error, result?: MessageEnqueued) => void)

Параметры

outputName

string

messages

Message[]

done

(err?: Error, result?: MessageEnqueued) => void

setOptions(DeviceClientOptions, (err?: Error, result?: TransportConfigured) => void)

function setOptions(options: DeviceClientOptions, done: (err?: Error, result?: TransportConfigured) => void)

Параметры

done

(err?: Error, result?: TransportConfigured) => void

updateSharedAccessSignature(string, (err?: Error, result?: SharedAccessSignatureUpdated) => void)

function updateSharedAccessSignature(sharedAccessSignature: string, done: (err?: Error, result?: SharedAccessSignatureUpdated) => void)

Параметры

sharedAccessSignature

string

done

(err?: Error, result?: SharedAccessSignatureUpdated) => void

updateTwinReportedProperties(any, (err?: Error) => void)

function updateTwinReportedProperties(patch: any, callback: (err?: Error) => void)

Параметры

patch

any

callback

(err?: Error) => void

Сведения о наследуемом методе

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

Псевдоним для emitter.on(eventName, listener).

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

Параметры

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

getMaxListeners()

Возвращает текущее максимальное значение прослушивателя для EventEmitter , которое имеет emitter.setMaxListeners(n) значение или по умолчанию имеет значение defaultMaxListeners.

function getMaxListeners(): number

Возвращаемое значение

number

Наследуется от EventEmitter.getMaxListeners

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): DeviceTransport

Параметры

eventName

string | symbol

listener

(args: any[]) => void

Возвращаемое значение

Наследуется от EventEmitter.off

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

Добавляет одноразовуюlistener функцию для события с именем eventName. При следующем 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): DeviceTransport

Параметры

eventName

string | symbol

Имя события.

listener

(args: any[]) => void

Функция обратного вызова

Возвращаемое значение

Наследуется от EventEmitter.once

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

Добавляет функцию в listenerначало массива прослушивателей для события с именем eventName. Проверки, чтобы убедиться, listener что объект уже добавлен, не выполняется. Несколько вызовов, передаваемых одинаковое eventName сочетание и listener , приведут к добавлению listener и вызову несколько раз.

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

Возвращает ссылку на EventEmitter, чтобы вызовы можно было связать в цепочку.

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

Параметры

eventName

string | symbol

Имя события.

listener

(args: any[]) => void

Функция обратного вызова

Возвращаемое значение

Наследуется от EventEmitter.prependListener

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

Добавляет одноразовуюlistener функцию для события с именем eventName в начало массива прослушивателей. При следующем eventName запуске прослушиватель удаляется, а затем вызывается.

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

Возвращает ссылку на EventEmitter, чтобы вызовы можно было связать в цепочку.

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

Параметры

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): DeviceTransport

Параметры

eventName

string | symbol

Возвращаемое значение

Наследуется от EventEmitter.removeAllListeners

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

Удаляет указанный listener объект из массива прослушивателя для события с именем eventName.

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

removeListener() удалит не более одного экземпляра прослушивателя из массива прослушивателя. Если какой-либо отдельный прослушиватель был добавлен несколько раз в массив прослушивателя для указанного eventName, то 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() будет удален последний добавленный экземпляр. В этом примере 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): DeviceTransport

Параметры

eventName

string | symbol

listener

(args: any[]) => void

Возвращаемое значение

Наследуется от EventEmitter.removeListener

setMaxListeners(number)

По умолчанию EventEmitters выводит предупреждение, если для определенного события добавляется больше 10 прослушивателей. Это полезное значение по умолчанию, помогающее найти утечки памяти. Метод emitter.setMaxListeners() позволяет изменить ограничение для этого конкретного экземпляра EventEmitter . Чтобы указать неограниченное количество прослушивателей, можно задать Infinity значение (или 0).

Возвращает ссылку на EventEmitter, чтобы вызовы можно было связать в цепочку.

function setMaxListeners(n: number): DeviceTransport

Параметры

n

number

Возвращаемое значение

Наследуется от 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@138