Client class
Клиент устройства Центра Интернета вещей, используемый для подключения устройства к Центру Интернета вещей Azure.
Пользователи пакета SDK должны вызывать один из методов фабрики, fromConnectionString или fromSharedAccessSignature для создания клиента устройства Центра Интернета вещей.
- Extends
-
InternalClient
Конструкторы
Client(Device |
Унаследованные свойства
capture |
Значение: логическое Измените параметр |
capture |
Значение: Узнайте, как написать настраиваемый |
default |
По умолчанию для любого одного события можно зарегистрировать максимум Будьте осторожны при настройке Это не трудное ограничение. Экземпляр
Флаг командной строки Выдающееся предупреждение можно проверить с помощью |
error |
Этот символ должен использоваться для установки прослушивателя только для мониторинга событий Установка прослушивателя с помощью этого символа не изменяет поведение после создания события |
Методы
close() | |
close(Callback<Disconnected>) | Закрывает транспортное подключение и уничтожает клиентские ресурсы. Примечание. После вызова этого метода невозможно повторно использовать объект Client. |
from |
Создает клиент устройства Центра Интернета вещей из заданного метода проверки подлинности и использует заданный тип транспорта. |
from |
Создает клиент устройства Центра Интернета вещей из заданной строки подключения с помощью заданного типа транспорта. |
from |
Создает клиент устройства Центра Интернета вещей из заданной подписанной общей подписи доступа с помощью заданного типа транспорта. |
get |
|
get |
|
notify |
|
notify |
Метод |
on |
Регистрирует обратный вызов для метода с именем |
set |
|
set |
|
upload |
|
upload |
Метод |
Наследуемые методы
abandon(Message) | |
abandon(Message, Callback<Message |
|
add |
Прослушивает событие Прослушивание события Этот API позволяет безопасно использовать Возвращает одноразовый объект, чтобы его можно было отменить с более легкой подписки.
|
add |
Псевдоним для |
complete(Message) | |
complete(Message, Callback<Message |
|
emit<K>(string | symbol, Any |
Синхронно вызывает каждый из прослушивателей, зарегистрированных для события с именем Возвращает
|
event |
Возвращает массив, в котором перечислены события, для которых у поставщика зарегистрированы прослушиватели. Значения в массиве — это строки или
|
get |
Возвращает копию массива прослушивателей для события с именем Для Для
|
get |
Возвращает текущее значение максимального прослушивателя для |
get |
Возвращает текущее максимальное количество прослушивателей. Для Для
|
get |
|
get |
|
listener |
Метод класса, возвращающий количество прослушивателей для заданного
|
listener |
Возвращает число прослушивателей, прослушивающих событие с именем |
listeners<K>(string | symbol) | Возвращает копию массива прослушивателей для события с именем
|
off<K>(string | symbol, (args: any[]) => void) | Псевдоним для |
on(Event |
Возвращает Для отмены ожиданий событий можно использовать
Используйте параметр
|
on(Event |
|
on<K>(string | symbol, (args: any[]) => void) | Добавляет функцию
Возвращает ссылку на По умолчанию прослушиватели событий вызываются в том порядке, в который они добавляются. Метод
|
once(Event |
Создает Этот метод намеренно универсальный и работает с веб-платформой интерфейсом EventTarget, который не имеет специальной семантики событий
Специальная обработка события
|
once(Event |
|
once<K>(string | symbol, (args: any[]) => void) | Добавляет функцию однократного
Возвращает ссылку на По умолчанию прослушиватели событий вызываются в том порядке, в который они добавляются. Метод
|
open() | |
open(Callback<Connected>) | |
prepend |
Добавляет функцию
Возвращает ссылку на |
prepend |
Добавляет функцию однократного
Возвращает ссылку на |
raw |
Возвращает копию массива прослушивателей для события с именем
|
reject(Message) | |
reject(Message, Callback<Message |
|
remove |
Удаляет все прослушиватели или те из указанных Не рекомендуется удалять прослушиватели, добавленные в другое место в коде, особенно если экземпляр Возвращает ссылку на |
remove |
Удаляет указанный
После создания события все прослушиватели, подключенные к нему во время создания, вызываются в порядке. Это означает, что все вызовы
Так как прослушиватели управляются с помощью внутреннего массива, вызывая это приведет к изменению индексов позиций любого прослушивателя, зарегистрированного после удаленного прослушивателя. Это не повлияет на порядок вызова прослушивателей, но это означает, что все копии массива прослушивателя, возвращенные методом Если одна функция была добавлена в обработчик несколько раз для одного события (как в примере ниже),
Возвращает ссылку на |
send |
|
send |
|
send |
|
send |
|
set |
По умолчанию Возвращает ссылку на |
set |
|
set |
Задает политику повторных попыток, используемую клиентом во всех операциях. Значение по умолчанию — ExponentialBackoffWithJitter. |
set |
|
set |
|
update |
|
[capture |
Сведения о конструкторе
Client(DeviceTransport, string, BlobUploadClient, FileUploadInterface)
new Client(transport: DeviceTransport, connStr?: string, blobUploadClient?: BlobUploadClient, fileUploadApi?: FileUploadInterface)
Параметры
- transport
- DeviceTransport
Объект, реализующий интерфейс, ожидаемый для транспортного объекта, например Http.
- connStr
-
string
Строка подключения (необязательно: если она не указана, необходимо вызвать updateSharedAccessSignature, чтобы задать маркер SharedAccessSignature напрямую).
- blobUploadClient
-
BlobUploadClient
Объект, способный передавать поток в большой двоичный объект.
- fileUploadApi
-
FileUploadInterface
Объект, используемый для взаимодействия с Центром Интернета вещей для связанных действий хранилища BLOB-объектов.
Сведения об унаследованном свойстве
captureRejections
Значение: логическое
Измените параметр captureRejections
по умолчанию для всех новых объектов EventEmitter
.
static captureRejections: boolean
Значение свойства
boolean
Наследуется от InternalClient.captureRejections
captureRejectionSymbol
Значение: Symbol.for('nodejs.rejection')
Узнайте, как написать настраиваемый rejection handler
.
static captureRejectionSymbol: typeof captureRejectionSymbol
Значение свойства
typeof captureRejectionSymbol
унаследован от InternalClient.captureRejectionSymbol
defaultMaxListeners
По умолчанию для любого одного события можно зарегистрировать максимум 10
прослушивателей. Это ограничение можно изменить для отдельных экземпляров EventEmitter
с помощью метода emitter.setMaxListeners(n)
. Чтобы изменить значение по умолчанию для всех экземпляровEventEmitter
, можно использовать свойство events.defaultMaxListeners
. Если это значение не является положительным числом, создается RangeError
.
Будьте осторожны при настройке events.defaultMaxListeners
, так как изменение влияет на всехEventEmitter
экземпляров, включая созданные до внесения изменений. Однако вызов emitter.setMaxListeners(n)
по-прежнему имеет приоритет над events.defaultMaxListeners
.
Это не трудное ограничение. Экземпляр EventEmitter
позволит добавлять больше прослушивателей, но выводит предупреждение трассировки в stderr, указывающее, что обнаружена "возможная утечка памяти EventEmitter". Для любого одного 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')
и иметь дополнительные emitter
, type
и count
свойства, ссылающиеся на экземпляр обработчика событий, имя события и число подключенных прослушивателей соответственно.
Для свойства name
задано значение 'MaxListenersExceededWarning'
.
static defaultMaxListeners: number
Значение свойства
number
унаследовано от InternalClient.defaultMaxListeners
errorMonitor
Этот символ должен использоваться для установки прослушивателя только для мониторинга событий 'error'
. Прослушиватели, установленные с помощью этого символа, вызываются перед вызовом обычных прослушивателей 'error'
.
Установка прослушивателя с помощью этого символа не изменяет поведение после создания события 'error'
. Поэтому процесс по-прежнему завершится сбоем, если не установлен обычный прослушиватель 'error'
.
static errorMonitor: typeof errorMonitor
Значение свойства
typeof errorMonitor
наследуется от InternalClient.errorMonitor
Сведения о методе
close()
function close(): Promise<Disconnected>
Возвращаемое значение
Promise<Disconnected>
close(Callback<Disconnected>)
Закрывает транспортное подключение и уничтожает клиентские ресурсы.
Примечание. После вызова этого метода невозможно повторно использовать объект Client.
function close(closeCallback?: Callback<Disconnected>)
Параметры
- closeCallback
-
Callback<Disconnected>
Необязательная функция для вызова после отключения транспорта и закрытия клиента.
fromAuthenticationProvider(AuthenticationProvider, any)
Создает клиент устройства Центра Интернета вещей из заданного метода проверки подлинности и использует заданный тип транспорта.
static function fromAuthenticationProvider(authenticationProvider: AuthenticationProvider, transportCtor: any): Client
Параметры
- authenticationProvider
-
AuthenticationProvider
Объект, используемый для получения параметров проверки подлинности для Центра Интернета вещей.
- transportCtor
-
any
Транспортный протокол, используемый для подключения к Центру Интернета вещей.
Возвращаемое значение
fromConnectionString(string, any)
Создает клиент устройства Центра Интернета вещей из заданной строки подключения с помощью заданного типа транспорта.
static function fromConnectionString(connStr: string, transportCtor: any): Client
Параметры
- connStr
-
string
Строка подключения, которая инкапсулирует разрешения "device connect" в Центре Интернета вещей.
- transportCtor
-
any
Конструктор транспорта.
Возвращаемое значение
fromSharedAccessSignature(string, any)
Создает клиент устройства Центра Интернета вещей из заданной подписанной общей подписи доступа с помощью заданного типа транспорта.
static function fromSharedAccessSignature(sharedAccessSignature: string, transportCtor: any): Client
Параметры
- sharedAccessSignature
-
string
Подписанный URL-адрес, инкапсулирующий разрешения "device connect" в Центре Интернета вещей.
- transportCtor
-
any
Возвращаемое значение
getBlobSharedAccessSignature(string)
function getBlobSharedAccessSignature(blobName: string): Promise<UploadParams>
Параметры
- blobName
-
string
Возвращаемое значение
Promise<UploadParams>
getBlobSharedAccessSignature(string, Callback<UploadParams>)
getBlobSharedAccessSignature
получает маркер SAS связанной учетной записи хранения из Центра Интернета вещей.
function getBlobSharedAccessSignature(blobName: string, callback?: Callback<UploadParams>)
Параметры
- blobName
-
string
Имя, используемое для большого двоичного объекта, который будет создан с содержимым потока.
- callback
-
Callback<UploadParams>
Необязательный обратный вызов при завершении отправки.
notifyBlobUploadStatus(string, boolean, number, string)
function notifyBlobUploadStatus(correlationId: string, isSuccess: boolean, statusCode: number, statusDescription: string): Promise<void>
Параметры
- correlationId
-
string
- isSuccess
-
boolean
- statusCode
-
number
- statusDescription
-
string
Возвращаемое значение
Promise<void>
notifyBlobUploadStatus(string, boolean, number, string, ErrorCallback)
Метод notifyBlobUploadStatus
отправляет Центр Интернета вещей результат отправки БОЛЬШОго двоичного объекта.
function notifyBlobUploadStatus(correlationId: string, isSuccess: boolean, statusCode: number, statusDescription: string, callback?: ErrorCallback)
Параметры
- correlationId
-
string
Идентификатор для сопоставления состояния отправки с определенным BLOB-объектом. Создан во время вызова getBlobSharedAccessSignature
.
- isSuccess
-
boolean
Состояние успешного выполнения или сбоя из результата операции большого двоичного объекта хранилища.
- statusCode
-
number
Код состояния HTTP, связанный с результатом большого двоичного объекта хранилища.
- statusDescription
-
string
Описание кода состояния HTTP.
- callback
-
ErrorCallback
Необязательный обратный вызов при завершении отправки.
onDeviceMethod(string, (request: DeviceMethodRequest, response: DeviceMethodResponse) => void)
Регистрирует обратный вызов для метода с именем methodName
.
function onDeviceMethod(methodName: string, callback: (request: DeviceMethodRequest, response: DeviceMethodResponse) => void)
Параметры
- methodName
-
string
Имя метода, который будет обрабатываться обратным вызовом
- callback
-
(request: DeviceMethodRequest, response: DeviceMethodResponse) => void
Функция, которая должна вызываться всякий раз при получении запроса метода для метода, вызываемого methodName
.
setOptions(DeviceClientOptions)
function setOptions(options: DeviceClientOptions): Promise<TransportConfigured>
Параметры
- options
- DeviceClientOptions
Возвращаемое значение
Promise<TransportConfigured>
setOptions(DeviceClientOptions, Callback<TransportConfigured>)
function setOptions(options: DeviceClientOptions, done: Callback<TransportConfigured>)
Параметры
- options
- DeviceClientOptions
- done
-
Callback<TransportConfigured>
uploadToBlob(string, Stream, number)
function uploadToBlob(blobName: string, stream: Stream, streamLength: number): Promise<void>
Параметры
- blobName
-
string
- stream
-
Stream
- streamLength
-
number
Возвращаемое значение
Promise<void>
uploadToBlob(string, Stream, number, ErrorCallback)
Метод uploadToBlob
передает поток в большой двоичный объект.
function uploadToBlob(blobName: string, stream: Stream, streamLength: number, callback: ErrorCallback)
Параметры
- blobName
-
string
Имя, используемое для большого двоичного объекта, который будет создан с содержимым потока.
- stream
-
Stream
Данные, которые должны быть отправлены в большой двоичный объект.
- streamLength
-
number
Размер данных, которые должны быть отправлены в большой двоичный объект.
- callback
-
ErrorCallback
Сведения о наследуемом методе
abandon(Message)
function abandon(message: Message): Promise<MessageAbandoned>
Параметры
- message
- Message
Возвращаемое значение
Promise<MessageAbandoned>
унаследован от InternalClient.abandon
abandon(Message, Callback<MessageAbandoned>)
function abandon(message: Message, abandonCallback: Callback<MessageAbandoned>)
Параметры
- message
- Message
- abandonCallback
-
Callback<MessageAbandoned>
унаследован от InternalClient.abandon
addAbortListener(AbortSignal, (event: Event) => void)
Прослушивает событие abort
на предоставленном signal
.
Прослушивание события abort
сигналов прерывания небезопасно и может привести к утечкам ресурсов, так как другая сторонняя сторона с сигналом может вызывать e.stopImmediatePropagation()
. К сожалению, Node.js не может изменить это, так как это нарушает веб-стандарт. Кроме того, исходный API упрощает удаление прослушивателей.
Этот API позволяет безопасно использовать AbortSignal
в Node.js API путем решения этих двух проблем, прослушивая событие таким образом, что stopImmediatePropagation
не препятствует запуску прослушивателя.
Возвращает одноразовый объект, чтобы его можно было отменить с более легкой подписки.
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
.
наследуется от InternalClient.addAbortListener
addListener<K>(string | symbol, (args: any[]) => void)
Псевдоним для emitter.on(eventName, listener)
.
function addListener<K>(eventName: string | symbol, listener: (args: any[]) => void): Client
Параметры
- eventName
-
string | symbol
- listener
-
(args: any[]) => void
Возвращаемое значение
унаследован от InternalClient.addListener
complete(Message)
function complete(message: Message): Promise<MessageCompleted>
Параметры
- message
- Message
Возвращаемое значение
Promise<MessageCompleted>
унаследован от InternalClient.complete
complete(Message, Callback<MessageCompleted>)
function complete(message: Message, completeCallback: Callback<MessageCompleted>)
Параметры
- message
- Message
- completeCallback
-
Callback<MessageCompleted>
унаследован от InternalClient.complete
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
наследуется от InternalClient.emit
eventNames()
Возвращает массив, в котором перечислены события, для которых у поставщика зарегистрированы прослушиватели. Значения в массиве — это строки или Symbol
s.
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)[]
Наследуется от InternalClient.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[]
унаследовано от InternalClient.getEventListeners
getMaxListeners()
Возвращает текущее значение максимального прослушивателя для EventEmitter
, заданного emitter.setMaxListeners(n)
или по умолчанию для defaultMaxListeners.
function getMaxListeners(): number
Возвращаемое значение
number
наследуется от InternalClient.getMaxListeners
getMaxListeners(EventEmitter<DefaultEventMap> | EventTarget)
Возвращает текущее максимальное количество прослушивателей.
Для EventEmitter
это ведет себя точно так же, как вызов .getMaxListeners
на эмитере.
Для EventTarget
это единственный способ получить максимальное число прослушивателей событий для целевого объекта событий. Если число обработчиков событий в одном объекте 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
наследуется от InternalClient.getMaxListeners
getTwin()
function getTwin(): Promise<Twin>
Возвращаемое значение
Promise<Twin>
унаследован от InternalClient.getTwin
getTwin(Callback<Twin>)
function getTwin(done: Callback<Twin>)
Параметры
- done
-
Callback<Twin>
унаследован от InternalClient.getTwin
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
наследуется от InternalClient.listenerCount
listenerCount<K>(string | symbol, Function)
Возвращает число прослушивателей, прослушивающих событие с именем eventName
.
Если указана listener
, он возвращает количество раз, когда прослушиватель найден в списке прослушивателей события.
function listenerCount<K>(eventName: string | symbol, listener?: Function): number
Параметры
- eventName
-
string | symbol
Имя прослушиваемого события
- listener
-
Function
Функция обработчика событий
Возвращаемое значение
number
наследуется от InternalClient.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[]
наследуется от InternalClient.прослушивателей
off<K>(string | symbol, (args: any[]) => void)
Псевдоним для emitter.removeListener()
.
function off<K>(eventName: string | symbol, listener: (args: any[]) => void): Client
Параметры
- eventName
-
string | symbol
- listener
-
(args: any[]) => void
Возвращаемое значение
наследуется от InternalClient.off
on(EventEmitter<DefaultEventMap>, string | symbol, StaticEventEmitterIteratorOptions)
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
. Если EventEmitter
выдает 'error'
. При выходе из цикла удаляются все прослушиватели.
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());
Используйте параметр close
, чтобы указать массив имен событий, который завершит итерацию:
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);
ee.emit('close');
});
for await (const event of on(ee, 'foo', { close: ['close'] })) {
console.log(event); // prints ['bar'] [42]
}
// the loop will exit after 'close' is emitted
console.log('done'); // prints 'done'
static function on(emitter: EventEmitter<DefaultEventMap>, eventName: string | symbol, options?: StaticEventEmitterIteratorOptions): AsyncIterator<any[], any, any>
Параметры
- emitter
-
EventEmitter<DefaultEventMap>
- eventName
-
string | symbol
- options
-
StaticEventEmitterIteratorOptions
Возвращаемое значение
AsyncIterator<any[], any, any>
AsyncIterator
, которая выполняет итерацию событий eventName
, создаваемых emitter
унаследовано от InternalClient.on
on(EventTarget, string, StaticEventEmitterIteratorOptions)
static function on(emitter: EventTarget, eventName: string, options?: StaticEventEmitterIteratorOptions): AsyncIterator<any[], any, any>
Параметры
- emitter
-
EventTarget
- eventName
-
string
- options
-
StaticEventEmitterIteratorOptions
Возвращаемое значение
AsyncIterator<any[], any, any>
унаследовано от InternalClient.on
on<K>(string | symbol, (args: any[]) => void)
Добавляет функцию listener
в конец массива прослушивателей для события с именем eventName
. Проверка не выполняется, чтобы узнать, добавлена ли listener
. Несколько вызовов, проходящих одно и то же сочетание eventName
и listener
, приведет к добавлению 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): Client
Параметры
- eventName
-
string | symbol
Имя события.
- listener
-
(args: any[]) => void
Функция обратного вызова
Возвращаемое значение
унаследовано от InternalClient.on
once(EventEmitter<DefaultEventMap>, string | symbol, StaticEventEmitterOptions)
Создает Promise
, которая выполняется, когда EventEmitter
выдает заданное событие или отклоняется, если EventEmitter
выдает 'error'
во время ожидания.
Promise
будет разрешаться с массивом всех аргументов, создаваемых заданному событию.
Этот метод намеренно универсальный и работает с веб-платформой интерфейсом EventTarget, который не имеет специальной семантики событий'error'
и не прослушивает событие '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()
используется для ожидания другого события. Если events.once()
используется для ожидания самого события "error'
", он обрабатывается как любое другое событие без специальной обработки:
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[]>
наследуется от InternalClient.once
once(EventTarget, string, StaticEventEmitterOptions)
static function once(emitter: EventTarget, eventName: string, options?: StaticEventEmitterOptions): Promise<any[]>
Параметры
- emitter
-
EventTarget
- eventName
-
string
- options
-
StaticEventEmitterOptions
Возвращаемое значение
Promise<any[]>
наследуется от InternalClient.once
once<K>(string | symbol, (args: any[]) => void)
Добавляет функцию однократного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): Client
Параметры
- eventName
-
string | symbol
Имя события.
- listener
-
(args: any[]) => void
Функция обратного вызова
Возвращаемое значение
наследуется от InternalClient.once
open()
function open(): Promise<Connected>
Возвращаемое значение
Promise<Connected>
наследуется от InternalClient.open
open(Callback<Connected>)
function open(openCallback: Callback<Connected>)
Параметры
- openCallback
-
Callback<Connected>
наследуется от InternalClient.open
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): Client
Параметры
- eventName
-
string | symbol
Имя события.
- listener
-
(args: any[]) => void
Функция обратного вызова
Возвращаемое значение
унаследован от InternalClient.prependListener
prependOnceListener<K>(string | symbol, (args: any[]) => void)
Добавляет функцию однократногоeventName
этот прослушиватель удаляется, а затем вызывается.
server.prependOnceListener('connection', (stream) => {
console.log('Ah, we have our first user!');
});
Возвращает ссылку на EventEmitter
, чтобы вызовы могли быть связаны.
function prependOnceListener<K>(eventName: string | symbol, listener: (args: any[]) => void): Client
Параметры
- eventName
-
string | symbol
Имя события.
- listener
-
(args: any[]) => void
Функция обратного вызова
Возвращаемое значение
унаследован от InternalClient.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[]
унаследовано от InternalClient.rawListeners
reject(Message)
function reject(message: Message): Promise<MessageRejected>
Параметры
- message
- Message
Возвращаемое значение
Promise<MessageRejected>
наследуется от InternalClient.reject
reject(Message, Callback<MessageRejected>)
function reject(message: Message, rejectCallback: Callback<MessageRejected>)
Параметры
- message
- Message
- rejectCallback
-
Callback<MessageRejected>
наследуется от InternalClient.reject
removeAllListeners(string | symbol)
Удаляет все прослушиватели или те из указанных eventName
.
Не рекомендуется удалять прослушиватели, добавленные в другое место в коде, особенно если экземпляр EventEmitter
был создан другим компонентом или модулем (например, сокетами или потоками файлов).
Возвращает ссылку на EventEmitter
, чтобы вызовы могли быть связаны.
function removeAllListeners(eventName?: string | symbol): Client
Параметры
- eventName
-
string | symbol
Возвращаемое значение
наследуется от InternalClient.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): Client
Параметры
- eventName
-
string | symbol
- listener
-
(args: any[]) => void
Возвращаемое значение
унаследован от InternalClient.removeListener
sendEvent(Message)
function sendEvent(message: Message): Promise<MessageEnqueued>
Параметры
- message
- Message
Возвращаемое значение
Promise<MessageEnqueued>
унаследовано от InternalClient.sendEvent
sendEvent(Message, Callback<MessageEnqueued>)
function sendEvent(message: Message, sendEventCallback: Callback<MessageEnqueued>)
Параметры
- message
- Message
- sendEventCallback
-
Callback<MessageEnqueued>
унаследовано от InternalClient.sendEvent
sendEventBatch(Message[])
function sendEventBatch(messages: Message[]): Promise<MessageEnqueued>
Параметры
- messages
-
Message[]
Возвращаемое значение
Promise<MessageEnqueued>
унаследован от InternalClient.sendEventBatch
sendEventBatch(Message[], Callback<MessageEnqueued>)
function sendEventBatch(messages: Message[], sendEventBatchCallback: Callback<MessageEnqueued>)
Параметры
- messages
-
Message[]
- sendEventBatchCallback
-
Callback<MessageEnqueued>
унаследован от InternalClient.sendEventBatch
setMaxListeners(number)
По умолчанию EventEmitter
будет выводить предупреждение, если для определенного события добавляются более 10
прослушивателей. Это полезное значение по умолчанию, которое помогает находить утечки памяти. Метод emitter.setMaxListeners()
позволяет изменить ограничение для этого конкретного экземпляра EventEmitter
. Для указания неограниченного количества прослушивателей можно задать значение Infinity
(или 0
).
Возвращает ссылку на EventEmitter
, чтобы вызовы могли быть связаны.
function setMaxListeners(n: number): Client
Параметры
- n
-
number
Возвращаемое значение
наследуется от InternalClient.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)[]
Ноль или более экземпляров {EventTarget} или {EventEmitter}. Если ни один из них не указан, n
устанавливается как максимальное значение по умолчанию для всех созданных объектов {EventTarget} и {EventEmitter}.
наследуется от InternalClient.setMaxListeners
setRetryPolicy(RetryPolicy)
Задает политику повторных попыток, используемую клиентом во всех операциях. Значение по умолчанию — ExponentialBackoffWithJitter.
function setRetryPolicy(policy: RetryPolicy)
Параметры
- policy
-
RetryPolicy
{RetryPolicy} Политика повторных попыток, которая должна использоваться для всех будущих операций.
унаследован от InternalClient.setRetryPolicy
setTransportOptions(any)
function setTransportOptions(options: any): Promise<TransportConfigured>
Параметры
- options
-
any
Возвращаемое значение
Promise<TransportConfigured>
наследуется от InternalClient.setTransportOptions
setTransportOptions(any, Callback<TransportConfigured>)
function setTransportOptions(options: any, done: Callback<TransportConfigured>)
Параметры
- options
-
any
- done
-
Callback<TransportConfigured>
наследуется от InternalClient.setTransportOptions
updateSharedAccessSignature(string, Callback<SharedAccessSignatureUpdated>)
function updateSharedAccessSignature(sharedAccessSignature: string, updateSasCallback?: Callback<SharedAccessSignatureUpdated>)
Параметры
- sharedAccessSignature
-
string
- updateSasCallback
-
Callback<SharedAccessSignatureUpdated>
унаследован от InternalClient.updateSharedAccessSignature
[captureRejectionSymbol]<K>(Error, string | symbol, AnyRest)
function [captureRejectionSymbol]<K>(error: Error, event: string | symbol, args: AnyRest)
Параметры
- error
-
Error
- event
-
string | symbol
- args
-
AnyRest
унаследован от InternalClient.__@captureRejectionSymbol@141