ModuleClient class

يستخدم عميل جهاز IoT Hub لتوصيل جهاز بمركز Azure IoT.

يجب على مستخدمي SDK استدعاء إحدى أساليب المصنع، منConnectionString أو fromSharedAccessSignature لإنشاء عميل جهاز IoT Hub.

Extends

InternalClient

الخصائص الموروثة

captureRejections

القيمة: منطقي

تغيير الخيار الافتراضي captureRejections على جميع العناصر الجديدة EventEmitter .

captureRejectionSymbol

القيمة: Symbol.for('nodejs.rejection')

تعرف على كيفية كتابة مخصص rejection handler.

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') وسيكون له خصائص و و count إضافيةemittertype، بالإشارة إلى مثيل انبعاث الحدث واسم الحدث وعدد المستمعين المرفقين، على التوالي. name تم تعيين الخاصية الخاصة به إلى 'MaxListenersExceededWarning'.

errorMonitor

يجب استخدام هذا الرمز لتثبيت وحدة استماع لمراقبة 'error' الأحداث فقط. يتم استدعاء المستمعين المثبتين باستخدام هذا الرمز قبل استدعاء المستمعين العاديين 'error' .

لا يؤدي تثبيت وحدة استماع باستخدام هذا الرمز إلى تغيير السلوك بمجرد 'error' إصدار حدث. لذلك، ستستمر العملية في التعطل إذا لم يتم تثبيت وحدة استماع عادية 'error' .

الأساليب

close()
close(Callback<Disconnected>)

إغلاق اتصال النقل وتدمير موارد العميل.

ملاحظة: بعد استدعاء هذا الأسلوب، لا يمكن إعادة استخدام كائن ModuleClient.

fromAuthenticationProvider(AuthenticationProvider, any)

إنشاء عميل وحدة IoT Hub من أسلوب المصادقة المحدد واستخدام نوع النقل المحدد.

fromConnectionString(string, any)

إنشاء عميل جهاز IoT Hub من سلسلة الاتصال المحدد باستخدام نوع النقل المحدد.

fromEnvironment(any)
fromEnvironment(any, Callback<ModuleClient>)

إنشاء عميل وحدة IoT Hub باستخدام معلومات التكوين من البيئة.

إذا كان متغير بيئة يسمى EdgeHubConnectionString أو IotHubConnectionString موجودا، فسيتم استخدام هذه القيمة والسلوك مطابق لاستدعاء fromConnectionString تمرير ذلك. إذا لم تكن متغيرات البيئة هذه موجودة، فيجب تعريف المتغيرات التالية:

- IOTEDGE_WORKLOADURI          URI for iotedged's workload API
- IOTEDGE_DEVICEID             Device identifier
- IOTEDGE_MODULEID             Module identifier
- IOTEDGE_MODULEGENERATIONID   Module generation identifier
- IOTEDGE_IOTHUBHOSTNAME       IoT Hub host name
- IOTEDGE_AUTHSCHEME           Authentication scheme to use; must be "sasToken"
fromSharedAccessSignature(string, any)

إنشاء عميل وحدة IoT Hub من توقيع الوصول المشترك المحدد باستخدام نوع النقل المحدد.

invokeMethod(string, MethodParams)
invokeMethod(string, MethodParams, Callback<MethodResult>)

استدعاء أسلوب على جهاز انتقال البيانات من الخادم أو على وحدة نمطية أخرى على نفس جهاز IoTEdge. يرجى ملاحظة أن هذه الميزة تعمل فقط عند تشغيل الوحدة النمطية كجزء من جهاز IoTEdge.

invokeMethod(string, string, MethodParams)
invokeMethod(string, string, MethodParams, Callback<MethodResult>)
onMethod(string, DoubleValueCallback<DeviceMethodRequest, DeviceMethodResponse>)

تسجيل رد اتصال لأسلوب يسمى methodName.

sendOutputEvent(string, Message)
sendOutputEvent(string, Message, Callback<MessageEnqueued>)

إرسال حدث إلى إخراج الوحدة النمطية المحددة

sendOutputEventBatch(string, Message[])
sendOutputEventBatch(string, Message[], Callback<MessageEnqueued>)

إرسال صفيف من الأحداث إلى إخراج الوحدة النمطية المحددة

setOptions(DeviceClientOptions)
setOptions(DeviceClientOptions, Callback<TransportConfigured>)

يمرر الخيارات إلى ModuleClient الكائن الذي يمكن استخدامه لتكوين النقل.

الأساليب المتوارثة

abandon(Message)
abandon(Message, Callback<MessageAbandoned>)
addAbortListener(AbortSignal, (event: Event) => void)

يستمع مرة واحدة إلى abort الحدث على المقدم signal.

الاستماع إلى abort الحدث على إشارات إحباط غير آمن وقد يؤدي إلى تسرب الموارد حيث يمكن لجهة خارجية أخرى مع الإشارة استدعاء e.stopImmediatePropagation(). للأسف لا يمكن Node.js تغيير هذا لأنه ينتهك معيار الويب. بالإضافة إلى ذلك، تجعل واجهة برمجة التطبيقات الأصلية من السهل نسيان إزالة المستمعين.

تسمح واجهة برمجة التطبيقات هذه باستخدام AbortSignals بأمان في واجهات برمجة التطبيقات Node.js عن طريق حل هاتين المشكلتين عن طريق الاستماع إلى الحدث بحيث 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]();
  }
}
addListener<K>(string | symbol, (args: any[]) => void)

الاسم المستعار ل emitter.on(eventName, listener).

complete(Message)
complete(Message, Callback<MessageCompleted>)
emit<K>(string | symbol, AnyRest)

يستدعي بشكل متزامن كل من المستمعين المسجلين للحدث المسمى eventName، بالترتيب الذي تم تسجيله، ما يمرر الوسيطات المتوفرة لكل منها.

إرجاع true إذا كان الحدث يحتوي على مستمعين، false بخلاف ذلك.

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

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

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

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

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

إرجاع صفيف يسرد الأحداث التي لدى المرسل مستمعين مسجلين لها. القيم في الصفيف هي سلاسل أو Symbols.

import { EventEmitter } from 'node:events';

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

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

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

إرجاع نسخة من صفيف المستمعين للحدث المسمى eventName.

لأن EventEmitterهذا يتصرف تماما نفس استدعاء .listeners على الباعث.

بالنسبة إلى EventTargets، هذه هي الطريقة الوحيدة للحصول على مستمعي الحدث لهدف الحدث. هذا مفيد لأغراض تصحيح الأخطاء والتشخيص.

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

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

إرجاع الحد الأقصى الحالي لقيمة EventEmitter وحدة الاستماع التي يتم تعيينها إما حسب emitter.setMaxListeners(n) أو الإعدادات الافتراضية إلى defaultMaxListeners.

getMaxListeners(EventEmitter<DefaultEventMap> | EventTarget)

إرجاع الحد الأقصى المعين حاليا لمقدار المستمعين.

لأن EventEmitterهذا يتصرف تماما نفس استدعاء .getMaxListeners على الباعث.

بالنسبة إلى EventTargets، هذه هي الطريقة الوحيدة للحصول على الحد الأقصى لمستمعي الأحداث لهدف الحدث. إذا تجاوز عدد معالجات الأحداث على 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
}
getTwin()
getTwin(Callback<Twin>)
listenerCount(EventEmitter<DefaultEventMap>, string | symbol)

أسلوب فئة يقوم بإرجاع عدد المستمعين للمقدم eventName المسجل في المحدد emitter.

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

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

إرجاع عدد المستمعين الذين يستمعون للحدث المسمى eventName. إذا listener تم توفيره، فسيرجع عدد المرات التي يتم فيها العثور على وحدة الإصغاء في قائمة مستمعي الحدث.

listeners<K>(string | symbol)

إرجاع نسخة من صفيف المستمعين للحدث المسمى eventName.

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

الاسم المستعار ل emitter.removeListener().

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

const ee = new EventEmitter();

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

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

AsyncIterator إرجاع الذي يكرر eventName الأحداث. سيرمي إذا 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());
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
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!
once(EventTarget, string, StaticEventEmitterOptions)
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
open()
open(Callback<Connected>)
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');
reject(Message)
reject(Message, Callback<MessageRejected>)
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، بحيث يمكن ربط الاستدعاءات.

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

بشكل افتراضي EventEmitter، سيطبع s تحذيرا إذا تمت إضافة أكثر من 10 وحدات الاستماع لحدث معين. هذا افتراضي مفيد يساعد على العثور على تسربات الذاكرة. emitter.setMaxListeners() يسمح الأسلوب بتعديل الحد لهذا المثيل المحددEventEmitter. يمكن تعيين القيمة إلى Infinity (أو 0) للإشارة إلى عدد غير محدود من المستمعين.

إرجاع مرجع إلى EventEmitter، بحيث يمكن ربط الاستدعاءات.

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

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

setMaxListeners(5, target, emitter);
setRetryPolicy(RetryPolicy)

تعيين نهج إعادة المحاولة الذي يستخدمه العميل في جميع العمليات. الافتراضي هو ExponentialBackoffWithJitter.

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

تفاصيل الخاصية الموروثة

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') وسيكون له خصائص و و count إضافيةemittertype، بالإشارة إلى مثيل انبعاث الحدث واسم الحدث وعدد المستمعين المرفقين، على التوالي. 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>)

إغلاق اتصال النقل وتدمير موارد العميل.

ملاحظة: بعد استدعاء هذا الأسلوب، لا يمكن إعادة استخدام كائن ModuleClient.

function close(closeCallback?: Callback<Disconnected>)

المعلمات

closeCallback

Callback<Disconnected>

دالة اختيارية للاتصال بمجرد قطع اتصال النقل وإغلاق العميل.

fromAuthenticationProvider(AuthenticationProvider, any)

إنشاء عميل وحدة IoT Hub من أسلوب المصادقة المحدد واستخدام نوع النقل المحدد.

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

المعلمات

authenticationProvider

AuthenticationProvider

الكائن المستخدم للحصول على معلمات المصادقة لمركز IoT.

transportCtor

any

بروتوكول النقل المستخدم للاتصال بمركز IoT.

المرتجعات

fromConnectionString(string, any)

إنشاء عميل جهاز IoT Hub من سلسلة الاتصال المحدد باستخدام نوع النقل المحدد.

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

المعلمات

connStr

string

سلسلة الاتصال الذي يغلف أذونات "اتصال الجهاز" على مركز IoT.

transportCtor

any

منشئ النقل.

المرتجعات

fromEnvironment(any)

static function fromEnvironment(transportCtor: any): Promise<ModuleClient>

المعلمات

transportCtor

any

المرتجعات

Promise<ModuleClient>

fromEnvironment(any, Callback<ModuleClient>)

إنشاء عميل وحدة IoT Hub باستخدام معلومات التكوين من البيئة.

إذا كان متغير بيئة يسمى EdgeHubConnectionString أو IotHubConnectionString موجودا، فسيتم استخدام هذه القيمة والسلوك مطابق لاستدعاء fromConnectionString تمرير ذلك. إذا لم تكن متغيرات البيئة هذه موجودة، فيجب تعريف المتغيرات التالية:

- IOTEDGE_WORKLOADURI          URI for iotedged's workload API
- IOTEDGE_DEVICEID             Device identifier
- IOTEDGE_MODULEID             Module identifier
- IOTEDGE_MODULEGENERATIONID   Module generation identifier
- IOTEDGE_IOTHUBHOSTNAME       IoT Hub host name
- IOTEDGE_AUTHSCHEME           Authentication scheme to use; must be "sasToken"
static function fromEnvironment(transportCtor: any, callback?: Callback<ModuleClient>)

المعلمات

transportCtor

any

بروتوكول النقل المستخدم للاتصال بمركز IoT.

callback

Callback<ModuleClient>

رد اتصال اختياري لاستدعاء عند إنشاء ModuleClient أو إذا حدث خطأ أثناء إنشاء العميل.

fromSharedAccessSignature(string, any)

إنشاء عميل وحدة IoT Hub من توقيع الوصول المشترك المحدد باستخدام نوع النقل المحدد.

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

المعلمات

sharedAccessSignature

string

توقيع وصول مشترك يغلف أذونات "اتصال الجهاز" على مركز IoT.

transportCtor

any

المرتجعات

invokeMethod(string, MethodParams)

function invokeMethod(deviceId: string, methodParams: MethodParams): Promise<MethodResult>

المعلمات

deviceId

string

methodParams

MethodParams

المرتجعات

Promise<MethodResult>

invokeMethod(string, MethodParams, Callback<MethodResult>)

استدعاء أسلوب على جهاز انتقال البيانات من الخادم أو على وحدة نمطية أخرى على نفس جهاز IoTEdge. يرجى ملاحظة أن هذه الميزة تعمل فقط عند تشغيل الوحدة النمطية كجزء من جهاز IoTEdge.

function invokeMethod(deviceId: string, methodParams: MethodParams, callback?: Callback<MethodResult>)

المعلمات

deviceId

string

معرف الجهاز الهدف

methodParams

MethodParams

معلمات استدعاء الأسلوب المباشر

callback

Callback<MethodResult>

رد الاتصال الاختياري الذي سيتم استدعاؤه إما مع كائن خطأ أو نتيجة استدعاء الأسلوب.

invokeMethod(string, string, MethodParams)

function invokeMethod(deviceId: string, moduleId: string, methodParams: MethodParams): Promise<MethodResult>

المعلمات

deviceId

string

moduleId

string

methodParams

MethodParams

المرتجعات

Promise<MethodResult>

invokeMethod(string, string, MethodParams, Callback<MethodResult>)

function invokeMethod(deviceId: string, moduleId: string, methodParams: MethodParams, callback: Callback<MethodResult>)

المعلمات

deviceId

string

moduleId

string

methodParams

MethodParams

callback

Callback<MethodResult>

onMethod(string, DoubleValueCallback<DeviceMethodRequest, DeviceMethodResponse>)

تسجيل رد اتصال لأسلوب يسمى methodName.

function onMethod(methodName: string, callback: DoubleValueCallback<DeviceMethodRequest, DeviceMethodResponse>)

المعلمات

methodName

string

اسم الأسلوب الذي سيتم التعامل معه بواسطة رد الاتصال

callback

DoubleValueCallback<DeviceMethodRequest, DeviceMethodResponse>

الدالة التي يجب استدعاؤها كلما تم تلقي طلب أسلوب للأسلوب الذي تم استدعاؤه methodName .

sendOutputEvent(string, Message)

function sendOutputEvent(outputName: string, message: Message): Promise<MessageEnqueued>

المعلمات

outputName

string

message
Message

المرتجعات

Promise<MessageEnqueued>

sendOutputEvent(string, Message, Callback<MessageEnqueued>)

إرسال حدث إلى إخراج الوحدة النمطية المحددة

function sendOutputEvent(outputName: string, message: Message, callback?: Callback<MessageEnqueued>)

المعلمات

outputName

string

اسم الإخراج لإرسال الحدث إلى

message
Message

رسالة لإرسالها إلى الإخراج المحدد

callback

Callback<MessageEnqueued>

دالة اختيارية لاستدعاء عند وضع العملية في قائمة الانتظار.

sendOutputEventBatch(string, Message[])

function sendOutputEventBatch(outputName: string, messages: Message[]): Promise<MessageEnqueued>

المعلمات

outputName

string

messages

Message[]

المرتجعات

Promise<MessageEnqueued>

sendOutputEventBatch(string, Message[], Callback<MessageEnqueued>)

إرسال صفيف من الأحداث إلى إخراج الوحدة النمطية المحددة

function sendOutputEventBatch(outputName: string, messages: Message[], callback?: Callback<MessageEnqueued>)

المعلمات

outputName

string

اسم الإخراج لإرسال الأحداث إليه

messages

Message[]

callback

Callback<MessageEnqueued>

دالة لاستدعاء عند وضع العمليات في قائمة الانتظار.

setOptions(DeviceClientOptions)

function setOptions(options: DeviceClientOptions): Promise<TransportConfigured>

المعلمات

المرتجعات

Promise<TransportConfigured>

setOptions(DeviceClientOptions, Callback<TransportConfigured>)

يمرر الخيارات إلى ModuleClient الكائن الذي يمكن استخدامه لتكوين النقل.

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

المعلمات

done

Callback<TransportConfigured>

رد اتصال اختياري للاتصال بمجرد تعيين الخيارات.

تفاصيل الأساليب المتوارثة

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 تغيير هذا لأنه ينتهك معيار الويب. بالإضافة إلى ذلك، تجعل واجهة برمجة التطبيقات الأصلية من السهل نسيان إزالة المستمعين.

تسمح واجهة برمجة التطبيقات هذه باستخدام AbortSignals بأمان في واجهات برمجة التطبيقات Node.js عن طريق حل هاتين المشكلتين عن طريق الاستماع إلى الحدث بحيث 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): ModuleClient

المعلمات

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

إرجاع صفيف يسرد الأحداث التي لدى المرسل مستمعين مسجلين لها. القيم في الصفيف هي سلاسل أو 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)[]

موروث من أسماء InternalClient.event

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

إرجاع نسخة من صفيف المستمعين للحدث المسمى eventName.

لأن EventEmitterهذا يتصرف تماما نفس استدعاء .listeners على الباعث.

بالنسبة إلى EventTargets، هذه هي الطريقة الوحيدة للحصول على مستمعي الحدث لهدف الحدث. هذا مفيد لأغراض تصحيح الأخطاء والتشخيص.

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 على الباعث.

بالنسبة إلى EventTargets، هذه هي الطريقة الوحيدة للحصول على الحد الأقصى لمستمعي الأحداث لهدف الحدث. إذا تجاوز عدد معالجات الأحداث على 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)

تحذير

واجهة برمجة التطبيقات هذه مهملة الآن.

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.listeners

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

الاسم المستعار ل emitter.removeListener().

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

المعلمات

eventName

string | symbol

listener

(args: any[]) => void

المرتجعات

موروث من InternalClient.off

on(EventEmitter<DefaultEventMap>, string, StaticEventEmitterOptions)

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

const ee = new EventEmitter();

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

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

AsyncIterator إرجاع الذي يكرر eventName الأحداث. سيرمي إذا 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());
static function on(emitter: EventEmitter<DefaultEventMap>, eventName: string, options?: StaticEventEmitterOptions): AsyncIterableIterator<any>

المعلمات

emitter

EventEmitter<DefaultEventMap>

eventName

string

اسم الحدث الذي يتم الاستماع إليه

options

StaticEventEmitterOptions

المرتجعات

AsyncIterableIterator<any>

AsyncIterator الذي يكرر eventName الأحداث المنبعثة منemitter

موروث من 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): ModuleClient

المعلمات

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)

يضيف دالة لمرة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): ModuleClient

المعلمات

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

المعلمات

eventName

string | symbol

اسم الحدث.

listener

(args: any[]) => void

دالة رد الاتصال

المرتجعات

موروث من InternalClient.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): ModuleClient

المعلمات

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

المعلمات

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

المعلمات

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، سيطبع s تحذيرا إذا تمت إضافة أكثر من 10 وحدات الاستماع لحدث معين. هذا افتراضي مفيد يساعد على العثور على تسربات الذاكرة. emitter.setMaxListeners() يسمح الأسلوب بتعديل الحد لهذا المثيل المحددEventEmitter. يمكن تعيين القيمة إلى Infinity (أو 0) للإشارة إلى عدد غير محدود من المستمعين.

إرجاع مرجع إلى EventEmitter، بحيث يمكن ربط الاستدعاءات.

function setMaxListeners(n: number): ModuleClient

المعلمات

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)[]

موروث من 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@138