你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Client class

用于将设备连接到 Azure IoT 中心的 IoT 中心设备客户端。

SDK 的用户应调用工厂方法之一,FromConnectionStringfromSharedAccessSignature 来创建 IoT 中心设备客户端。

扩展

InternalClient

构造函数

Client(DeviceTransport, string, BlobUploadClient, FileUploadInterface)

方法

close()
close(Callback<Disconnected>)

关闭传输连接并销毁客户端资源。

注意:调用此方法后,不能重复使用 Client 对象。

fromAuthenticationProvider(AuthenticationProvider, any)

使用给定的身份验证方法并使用给定的传输类型创建 IoT 中心设备客户端。

fromConnectionString(string, any)

使用给定的传输类型从给定连接字符串创建 IoT 中心设备客户端。

fromSharedAccessSignature(string, any)

使用给定的传输类型从给定的共享访问签名创建 IoT 中心设备客户端。

getBlobSharedAccessSignature(string)
getBlobSharedAccessSignature(string, Callback<UploadParams>)

getBlobSharedAccessSignature 从 IoT 中心获取链接的存储帐户 SAS 令牌

notifyBlobUploadStatus(string, boolean, number, string)
notifyBlobUploadStatus(string, boolean, number, string, ErrorCallback)

notifyBlobUploadStatus 方法将 IoT 中心发送 Blob 上传的结果。

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

为名为 methodName的方法注册回调。

setOptions(DeviceClientOptions)
setOptions(DeviceClientOptions, Callback<TransportConfigured>)
uploadToBlob(string, Stream, number)
uploadToBlob(string, Stream, number, ErrorCallback)

uploadToBlob 方法将流上传到 blob。

继承的方法

abandon(Message)
abandon(Message, Callback<MessageAbandoned>)
addListener<E>(string | symbol, (args: any[]) => void)

emitter.on(eventName, listener)的别名。

complete(Message)
complete(Message, Callback<MessageCompleted>)
emit<E>(string | symbol, any[])

同步调用为名为 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()

返回一个数组,其中列出发出器已注册侦听器的事件。

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) 的当前最大侦听器值,或默认值为 events.defaultMaxListeners

getTwin()
getTwin(Callback<Twin>)
listenerCount<E>(string | symbol, (args: any[]) => void)

返回侦听名为 eventName的事件的侦听器数。 如果提供了 listener,它将返回在事件的侦听器列表中找到的侦听器的次数。

listeners<E>(string | symbol)

返回名为 eventName的事件的侦听器数组的副本。

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

emitter.removeListener()的别名。

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

listener 函数添加到名为 eventName的事件的侦听器数组的末尾。 不会进行检查,以查看是否已添加 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<E>(string | symbol, (args: any[]) => void)

为名为 的事件添加 listenereventName 函数。 下次触发 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
open()
open(Callback<Connected>)
prependListener<E>(string | symbol, (args: any[]) => void)

函数添加到名为 的事件的侦听器数组的开始 。 不会进行检查,以查看是否已添加 listener。 传递 eventNamelistener 相同组合的多个调用将导致添加 listener 并多次调用。

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

返回对 EventEmitter的引用,以便可以链接调用。

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

将名为 的事件 一次性 函数添加到侦听器数组 开始 。 下次触发 eventName 时,将删除此侦听器,然后调用。

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

返回对 EventEmitter的引用,以便可以链接调用。

rawListeners<E>(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');
reject(Message)
reject(Message, Callback<MessageRejected>)
removeAllListeners<E>(string | symbol)

删除所有侦听器或指定 eventName的侦听器。

删除代码中的其他位置添加的侦听器是错误的做法,尤其是在由其他组件或模块(例如套接字或文件流)创建 EventEmitter 实例时。

返回对 EventEmitter的引用,以便可以链接调用。

removeListener<E>(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的引用,以便可以链接调用。

sendEvent(Message)
sendEvent(Message, Callback<MessageEnqueued>)
sendEventBatch(Message[])
sendEventBatch(Message[], Callback<MessageEnqueued>)
setMaxListeners(number)

默认情况下,如果为特定事件添加了多个 EventEmitter 侦听器,10将打印警告。 这是一个有用的默认值,可帮助查找内存泄漏。 emitter.setMaxListeners() 方法允许修改此特定 EventEmitter 实例的限制。 该值可以设置为 Infinity(或 0),以指示无限数量的侦听器。

返回对 EventEmitter的引用,以便可以链接调用。

setRetryPolicy(RetryPolicy)

设置客户端在所有操作上使用的重试策略。 默认值为 ExponentialBackoffWithJitter

setTransportOptions(any)
setTransportOptions(any, Callback<TransportConfigured>)
updateSharedAccessSignature(string, Callback<SharedAccessSignatureUpdated>)
[captureRejectionSymbol](Error, string | symbol, any[])

Symbol.for('nodejs.rejection')该方法用于在发射事件时发生承诺拒绝,并且captureRejections在发射端被启用时调用。 可以用 events.captureRejectionSymbol 代替 Symbol.for('nodejs.rejection')

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

class MyClass extends EventEmitter {
  constructor() {
    super({ captureRejections: true });
  }

  [captureRejectionSymbol](err, event, ...args) {
    console.log('rejection happened for', event, 'with', err, ...args);
    this.destroy(err);
  }

  destroy(err) {
    // Tear the resource down here.
  }
}

构造函数详细信息

Client(DeviceTransport, string, BlobUploadClient, FileUploadInterface)

new Client(transport: DeviceTransport, connStr?: string, blobUploadClient?: BlobUploadClient, fileUploadApi?: FileUploadInterface)

参数

transport
DeviceTransport

实现传输对象所需的接口的对象,例如 Http

connStr

string

连接字符串(可选):如果未提供,则必须调用 updateSharedAccessSignature 以直接设置 SharedAccessSignature 令牌。

blobUploadClient

BlobUploadClient

能够将流上传到 Blob 的对象。

fileUploadApi

FileUploadInterface

用于与 IoT 中心通信的 Blob 存储相关操作的对象。

方法详细信息

close()

function close(): Promise<Disconnected>

返回

Promise<Disconnected>

close(Callback<Disconnected>)

关闭传输连接并销毁客户端资源。

注意:调用此方法后,不能重复使用 Client 对象。

function close(closeCallback?: Callback<Disconnected>)

参数

closeCallback

Callback<Disconnected>

在传输断开连接且客户端关闭后,要调用的可选函数。

fromAuthenticationProvider(AuthenticationProvider, any)

使用给定的身份验证方法并使用给定的传输类型创建 IoT 中心设备客户端。

static function fromAuthenticationProvider(authenticationProvider: AuthenticationProvider, transportCtor: any): Client

参数

authenticationProvider

AuthenticationProvider

用于获取 IoT 中心的身份验证参数的对象。

transportCtor

any

用于连接到 IoT 中心的传输协议。

返回

fromConnectionString(string, any)

使用给定的传输类型从给定连接字符串创建 IoT 中心设备客户端。

static function fromConnectionString(connStr: string, transportCtor: any): Client

参数

connStr

string

封装 IoT 中心的“设备连接”权限的连接字符串。

transportCtor

any

传输构造函数。

返回

fromSharedAccessSignature(string, any)

使用给定的传输类型从给定的共享访问签名创建 IoT 中心设备客户端。

static function fromSharedAccessSignature(sharedAccessSignature: string, transportCtor: any): Client

参数

sharedAccessSignature

string

一个共享访问签名,用于封装 IoT 中心的“设备连接”权限。

transportCtor

any

返回

getBlobSharedAccessSignature(string)

function getBlobSharedAccessSignature(blobName: string): Promise<UploadParams>

参数

blobName

string

返回

Promise<UploadParams>

getBlobSharedAccessSignature(string, Callback<UploadParams>)

getBlobSharedAccessSignature 从 IoT 中心获取链接的存储帐户 SAS 令牌

function getBlobSharedAccessSignature(blobName: string, callback?: Callback<UploadParams>)

参数

blobName

string

要用于将随流内容一起创建的 Blob 的名称。

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 方法将 IoT 中心发送 Blob 上传的结果。

function notifyBlobUploadStatus(correlationId: string, isSuccess: boolean, statusCode: number, statusDescription: string, callback?: ErrorCallback)

参数

correlationId

string

用于将上传状态关联到特定 blob 的 ID。 在调用 getBlobSharedAccessSignature期间生成的 。

isSuccess

boolean

存储 Blob 操作结果中的成功或失败状态。

statusCode

number

与存储 Blob 结果关联的 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>

参数

返回

Promise<TransportConfigured>

setOptions(DeviceClientOptions, Callback<TransportConfigured>)

function setOptions(options: DeviceClientOptions, done: Callback<TransportConfigured>)

参数

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 方法将流上传到 blob。

function uploadToBlob(blobName: string, stream: Stream, streamLength: number, callback: ErrorCallback)

参数

blobName

string

要用于将随流内容一起创建的 Blob 的名称。

stream

Stream

应将数据上传到 Blob。

streamLength

number

应上传到 Blob 的数据的大小。

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

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

emitter.on(eventName, listener)的别名。

function addListener<E>(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<E>(string | symbol, any[])

同步调用为名为 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<E>(eventName: string | symbol, args: any[]): boolean

参数

eventName

string | symbol

args

any[]

返回

boolean

继承自 InternalClient.emit

eventNames()

返回一个数组,其中列出发出器已注册侦听器的事件。

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

getMaxListeners()

返回由 EventEmitter 设置的 emitter.setMaxListeners(n) 的当前最大侦听器值,或默认值为 events.defaultMaxListeners

function getMaxListeners(): number

返回

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<E>(string | symbol, (args: any[]) => void)

返回侦听名为 eventName的事件的侦听器数。 如果提供了 listener,它将返回在事件的侦听器列表中找到的侦听器的次数。

function listenerCount<E>(eventName: string | symbol, listener?: (args: any[]) => void): number

参数

eventName

string | symbol

正在侦听的事件的名称

listener

(args: any[]) => void

事件处理程序函数

返回

number

继承自 InternalClient.listenerCount

listeners<E>(string | symbol)

返回名为 eventName的事件的侦听器数组的副本。

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

参数

eventName

string | symbol

返回

(args: any[]) => void[]

继承自 InternalClient.listeners

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

emitter.removeListener()的别名。

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

参数

eventName

string | symbol

listener

(args: any[]) => void

返回

继承自 InternalClient.off

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

listener 函数添加到名为 eventName的事件的侦听器数组的末尾。 不会进行检查,以查看是否已添加 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<E>(eventName: string | symbol, listener: (args: any[]) => void): Client

参数

eventName

string | symbol

事件的名称。

listener

(args: any[]) => void

回调函数

返回

继承自 InternalClient.on

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

为名为 的事件添加 listenereventName 函数。 下次触发 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<E>(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<E>(string | symbol, (args: any[]) => void)

函数添加到名为 的事件的侦听器数组的开始 。 不会进行检查,以查看是否已添加 listener。 传递 eventNamelistener 相同组合的多个调用将导致添加 listener 并多次调用。

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

返回对 EventEmitter的引用,以便可以链接调用。

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

参数

eventName

string | symbol

事件的名称。

listener

(args: any[]) => void

回调函数

返回

继承自 InternalClient.prependListener

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

将名为 的事件 一次性 函数添加到侦听器数组 开始 。 下次触发 eventName 时,将删除此侦听器,然后调用。

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

返回对 EventEmitter的引用,以便可以链接调用。

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

参数

eventName

string | symbol

事件的名称。

listener

(args: any[]) => void

回调函数

返回

继承自 InternalClient.prependOnceListener

rawListeners<E>(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<E>(eventName: string | symbol): (args: any[]) => void[]

参数

eventName

string | symbol

返回

(args: any[]) => void[]

继承自 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<E>(string | symbol)

删除所有侦听器或指定 eventName的侦听器。

删除代码中的其他位置添加的侦听器是错误的做法,尤其是在由其他组件或模块(例如套接字或文件流)创建 EventEmitter 实例时。

返回对 EventEmitter的引用,以便可以链接调用。

function removeAllListeners<E>(eventName?: string | symbol): Client

参数

eventName

string | symbol

返回

继承自 InternalClient.removeAllListeners

removeListener<E>(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<E>(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

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](Error, string | symbol, any[])

Symbol.for('nodejs.rejection')该方法用于在发射事件时发生承诺拒绝,并且captureRejections在发射端被启用时调用。 可以用 events.captureRejectionSymbol 代替 Symbol.for('nodejs.rejection')

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

class MyClass extends EventEmitter {
  constructor() {
    super({ captureRejections: true });
  }

  [captureRejectionSymbol](err, event, ...args) {
    console.log('rejection happened for', event, 'with', err, ...args);
    this.destroy(err);
  }

  destroy(err) {
    // Tear the resource down here.
  }
}
function [captureRejectionSymbol](error: Error, event: string | symbol, args: any[])

参数

error

Error

event

string | symbol

args

any[]

继承自 InternalClient.__@captureRejectionSymbol@127