Twin class

Device Twin هو مستند يصف حالة الجهاز المخزن بواسطة مركز Azure IoT وهو متوفر حتى إذا كان الجهاز غير متصل. وهو مبني حول 3 أقسام:

  • العلامات: أزواج المفاتيح/القيم التي يمكن الوصول إليها فقط من جانب الخدمة
  • الخصائص المطلوبة: تم تحديثها بواسطة خدمة وتلقيها من قبل الجهاز
  • الخصائص المبلغ عنها: تم تحديثها بواسطة الجهاز وتلقيها بواسطة الخدمة.

لاحظ أنه على الرغم من أنه احتمال، لا يجب أن تتطابق الخصائص المطلوبة والمبلغ عنها وأن المنطق لمزامنة هاتين المجموعتين، إذا لزم الأمر، يترك لمستخدم SDK.

لمزيد من المعلومات، راجع فهم توائم الجهاز.

يمتد

EventEmitter

الخصائص

desiredPath
errorEvent
properties

قواميس الخصائص المطلوبة والمبلغ عنها (على التوالي في properties.desiredproperties.reported).

userRegisteredDesiredPropertiesListener

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

captureRejections

القيمة: بوليان

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

captureRejectionSymbol

قيمه: Symbol.for('nodejs.rejection')

اكتشف كيف تكتب رسالة مخصصة rejection handler.

defaultMaxListeners

بشكل افتراضي، يمكن تسجيل حد أقصى من 10 المستمعين لأي حدث منفرد. يمكن تغيير هذا الحد لكل EventEmitter حالة باستخدام الطريقة emitter.setMaxListeners(n) . لتغيير الإعداد الافتراضي لجميعEventEmitter الحالات، يمكن استخدام الخاصية events.defaultMaxListeners . إذا لم تكن هذه القيمة رقما موجبا، يتم رمي a RangeError .

كن حذرا عند تعيين ال لأن events.defaultMaxListeners التغيير يؤثر على جميعEventEmitter الحالات، بما في ذلك تلك التي تم إنشاؤها قبل إجراء التغيير. ومع ذلك، لا يزال الاتصال emitter.setMaxListeners(n) له أولوية على events.defaultMaxListeners.

هذا ليس حدا صارما. سيسمح النسخة EventEmitter بإضافة المزيد من المستمعين لكنها ستخرج تحذيرا من التتبع إلى stderr يشير إلى أنه تم اكتشاف "تسرب ذاكرة محتمل لإصدار EventEmeter". بالنسبة لأي منفرد 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'

errorMonitor

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

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

الأساليب

get()
get(Callback<Twin>)

يحصل على التوأم بأكمله من الخدمة.

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

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

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ل s، هذا يتصرف تماما مثل استدعاء .listeners الباعث.

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

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) أو الإعدادات الافتراضية إلى <xref:EventEmitter.defaultMaxListeners>.

getMaxListeners(EventEmitter<DefaultEventMap> | EventTarget)

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

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

بالنسبة EventTargetل s، هذه هي الطريقة الوحيدة للحصول على أكبر عدد من المستمعين للحدث المستهدف. إذا تجاوز عدد معالجي الأحداث على EventTarget واحد الحد الأقصى للمجموعة، يقوم EventTarget بطباعة تحذير.

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

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

طريقة فئة تعيد عدد المستمعين للمستمعين الممهمان eventName المسجل على .emitter

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

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

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

listeners<K>(string | symbol)

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

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

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

on(EventEmitter<DefaultEventMap>, string | 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 الأحداث. سيرمي إذا أطلق 'error'.EventEmitter يقوم بإزالة جميع المستمعين عند الخروج من الحلقة. الرجوع value في كل تكرار هو مصفوفة مكونة من حجج الأحداث المنبعثة.

يمكن استخدام ال لإلغاء AbortSignal الانتظار في الفعاليات:

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

const ac = new AbortController();

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

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

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

process.nextTick(() => ac.abort());

استخدم الخيار 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'
on(EventTarget, string, StaticEventEmitterIteratorOptions)
on<K>(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(EventEmitter<DefaultEventMap>, string | symbol, StaticEventEmitterOptions)

ينشئ A Promise يتحقق عندما EventEmitter يصدر الحدث المعطى أو يرفض إذا كان 'error' يصدر EventEmitter أثناء الانتظار. سيتم حل ال 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

يمكن استخدام an AbortSignal لإلغاء انتظار الحدث:

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

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

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

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

إضافة دالة لمرة واحدة للحدث المسمى . في المرة التالية التي يتم فيها تشغيل eventName، تتم إزالة وحدة الاستماع هذه ثم استدعاؤها.

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

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

بشكل افتراضي، يتم استدعاء مستمعي الأحداث بالترتيب الذي تتم إضافتهم به. يمكن استخدام أسلوب emitter.prependOnceListener() كبديل لإضافة مستمع الحدث إلى بداية صفيف المستمعين.

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

إضافة الدالة إلى بداية من صفيف المستمعين للحدث المسمى . لا يتم إجراء أي فحوصات لمعرفة ما إذا كان قد تمت إضافة listener بالفعل. ستؤدي المكالمات المتعددة التي تمر بنفس المجموعة من eventNamelistener إلى إضافة listener واستدعاؤها عدة مرات.

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

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

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

إضافة دالة لمرة واحدة للحدث المسمى إلى بداية من صفيف المستمعين. في المرة التالية التي يتم فيها تشغيل eventName، تتم إزالة وحدة الاستماع هذه، ثم استدعاؤها.

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

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

rawListeners<K>(string | symbol)

إرجاع نسخة من صفيف المستمعين للحدث المسمى eventName، بما في ذلك أي برامج تضمين (مثل تلك التي تم إنشاؤها بواسطة .once()).

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

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

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

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

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

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

إزالة كافة وحدات الاستماع، أو تلك الخاصة eventNameالمحددة.

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

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

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

يزيل listener المحدد من صفيف وحدة الاستماع للحدث المسمى eventName.

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

سيقوم removeListener()، على الأكثر، بإزالة مثيل واحد من وحدة الإصغاء من صفيف وحدة الاستماع. إذا تمت إضافة أي وحدة استماع واحدة عدة مرات إلى صفيف وحدة الاستماع eventNameالمحدد ، فيجب استدعاء removeListener() عدة مرات لإزالة كل مثيل.

بمجرد إصدار حدث، يتم استدعاء جميع المستمعين المرفقين به في وقت الانبعاث بالترتيب. وهذا يعني أن أي مكالمات removeListener() أو removeAllListeners()بعد إصدارقبل آخر وحدة استماع تنتهي من التنفيذ لن تزيلها منemit() قيد التقدم. تتصرف الأحداث اللاحقة كما هو متوقع.

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

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

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

myEmitter.on('event', callbackA);

myEmitter.on('event', callbackB);

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

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

نظرا لأنه تتم إدارة المستمعين باستخدام صفيف داخلي، سيؤدي استدعاء هذا إلى تغيير فهارس موضع أي وحدة استماع مسجلة بعد إزالة وحدة الاستماع. لن يؤثر هذا على الترتيب الذي يتم استدعاء المستمعين به، ولكنه يعني أن أي نسخ من صفيف وحدة الاستماع كما تم إرجاعها بواسطة أسلوب emitter.listeners() ستحتاج إلى إعادة إنشائها.

عند إضافة دالة واحدة كمعالج عدة مرات لحدث واحد (كما في المثال أدناه)، سيقوم removeListener() بإزالة المثيل الذي تمت إضافته مؤخرا. في المثال، تتم إزالة وحدة الاستماع once('ping'):

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

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

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

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

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

setMaxListeners(number)

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

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

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

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

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

تفاصيل الخاصية

desiredPath

static desiredPath: string

قيمة الخاصية

string

errorEvent

static errorEvent: string

قيمة الخاصية

string

properties

قواميس الخصائص المطلوبة والمبلغ عنها (على التوالي في properties.desiredproperties.reported).

properties: TwinProperties

قيمة الخاصية

userRegisteredDesiredPropertiesListener

userRegisteredDesiredPropertiesListener: boolean

قيمة الخاصية

boolean

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

captureRejections

القيمة: بوليان

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

static captureRejections: boolean

قيمة الخاصية

boolean

موروث من EventEmitter.capture. الرفض

captureRejectionSymbol

قيمه: Symbol.for('nodejs.rejection')

اكتشف كيف تكتب رسالة مخصصة rejection handler.

static captureRejectionSymbol: typeof captureRejectionSymbol

قيمة الخاصية

typeof captureRejectionSymbol

موروث من EventEmitter.captureRejectionSymbol

defaultMaxListeners

بشكل افتراضي، يمكن تسجيل حد أقصى من 10 المستمعين لأي حدث منفرد. يمكن تغيير هذا الحد لكل EventEmitter حالة باستخدام الطريقة emitter.setMaxListeners(n) . لتغيير الإعداد الافتراضي لجميعEventEmitter الحالات، يمكن استخدام الخاصية events.defaultMaxListeners . إذا لم تكن هذه القيمة رقما موجبا، يتم رمي a RangeError .

كن حذرا عند تعيين ال لأن events.defaultMaxListeners التغيير يؤثر على جميعEventEmitter الحالات، بما في ذلك تلك التي تم إنشاؤها قبل إجراء التغيير. ومع ذلك، لا يزال الاتصال emitter.setMaxListeners(n) له أولوية على events.defaultMaxListeners.

هذا ليس حدا صارما. سيسمح النسخة EventEmitter بإضافة المزيد من المستمعين لكنها ستخرج تحذيرا من التتبع إلى stderr يشير إلى أنه تم اكتشاف "تسرب ذاكرة محتمل لإصدار EventEmeter". بالنسبة لأي منفرد 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

موروث من EventEmitter.defaultMaxListeners

errorMonitor

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

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

static errorMonitor: typeof errorMonitor

قيمة الخاصية

typeof errorMonitor

موروث من EventEmitter.errorMonitor

تفاصيل الأسلوب

get()

function get(): Promise<Twin>

المرتجعات

Promise<Twin>

get(Callback<Twin>)

يحصل على التوأم بأكمله من الخدمة.

function get(callback?: Callback<Twin>)

المعلمات

callback

Callback<Twin>

الدالة الاختيارية التي يجب استدعاؤها مرة أخرى مع التوأم أو خطأ إذا فشل النقل في استرداد التوأم.

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

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 .

موروث من EventEmitter.addAbortListener

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

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

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

المعلمات

eventName

string | symbol

listener

(args: any[]) => void

المرتجعات

موروث من EventEmitter.addListener

emit<K>(string | symbol, AnyRest)

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

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

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

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

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

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

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

المعلمات

eventName

string | symbol

args

AnyRest

المرتجعات

boolean

موروث من EventEmitter.emit

eventNames()

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

import { EventEmitter } from 'node:events';

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

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

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

المرتجعات

(string | symbol)[]

موروث من EventEmitter.eventNames

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

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

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

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

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

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

المعلمات

emitter

EventEmitter<DefaultEventMap> | EventTarget

name

string | symbol

المرتجعات

Function[]

موروث من EventEmitter.getEventSenseers

getMaxListeners()

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

function getMaxListeners(): number

المرتجعات

number

الموروثة من EventEmitter.getMaxListeners

getMaxListeners(EventEmitter<DefaultEventMap> | EventTarget)

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

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

بالنسبة EventTargetل s، هذه هي الطريقة الوحيدة للحصول على أكبر عدد من المستمعين للحدث المستهدف. إذا تجاوز عدد معالجي الأحداث على EventTarget واحد الحد الأقصى للمجموعة، يقوم EventTarget بطباعة تحذير.

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

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

المعلمات

emitter

EventEmitter<DefaultEventMap> | EventTarget

المرتجعات

number

الموروثة من EventEmitter.getMaxListeners

listenerCount(EventEmitter<DefaultEventMap>, string | symbol)

تحذير

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

Since v3.2.0 - Use listenerCount instead.

طريقة فئة تعيد عدد المستمعين للمستمعين الممهمان eventName المسجل على .emitter

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

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

المعلمات

emitter

EventEmitter<DefaultEventMap>

الباعث الذي يجب الاستعلام عنه

eventName

string | symbol

اسم الحدث

المرتجعات

number

موروث من EventEmitter.listenerCount

listenerCount<K>(string | symbol, Function)

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

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

المعلمات

eventName

string | symbol

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

listener

Function

دالة معالج الأحداث

المرتجعات

number

موروث من EventEmitter.listenerCount

listeners<K>(string | symbol)

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

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

المعلمات

eventName

string | symbol

المرتجعات

Function[]

موروثة من EventEmitter.listeners

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

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

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

المعلمات

eventName

string | symbol

listener

(args: any[]) => void

المرتجعات

موروث من EventEmitter.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 الأحداث. سيرمي إذا أطلق 'error'.EventEmitter يقوم بإزالة جميع المستمعين عند الخروج من الحلقة. الرجوع value في كل تكرار هو مصفوفة مكونة من حجج الأحداث المنبعثة.

يمكن استخدام ال لإلغاء AbortSignal الانتظار في الفعاليات:

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

const ac = new AbortController();

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

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

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

process.nextTick(() => ac.abort());

استخدم الخيار 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

موروث من EventEmitter.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>

موروث من EventEmitter.on

on<K>(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<K>(eventName: string | symbol, listener: (args: any[]) => void): Twin

المعلمات

eventName

string | symbol

اسم الحدث.

listener

(args: any[]) => void

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

المرتجعات

موروث من EventEmitter.on

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

ينشئ A Promise يتحقق عندما EventEmitter يصدر الحدث المعطى أو يرفض إذا كان 'error' يصدر EventEmitter أثناء الانتظار. سيتم حل ال 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

يمكن استخدام an AbortSignal لإلغاء انتظار الحدث:

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

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

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

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

المعلمات

emitter

EventEmitter<DefaultEventMap>

eventName

string | symbol

options

StaticEventEmitterOptions

المرتجعات

Promise<any[]>

موروث من EventEmitter.once

once(EventTarget, string, StaticEventEmitterOptions)

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

المعلمات

emitter

EventTarget

eventName

string

options

StaticEventEmitterOptions

المرتجعات

Promise<any[]>

موروث من EventEmitter.once

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

إضافة دالة لمرة واحدة للحدث المسمى . في المرة التالية التي يتم فيها تشغيل eventName، تتم إزالة وحدة الاستماع هذه ثم استدعاؤها.

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

المعلمات

eventName

string | symbol

اسم الحدث.

listener

(args: any[]) => void

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

المرتجعات

موروث من EventEmitter.once

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

إضافة الدالة إلى بداية من صفيف المستمعين للحدث المسمى . لا يتم إجراء أي فحوصات لمعرفة ما إذا كان قد تمت إضافة listener بالفعل. ستؤدي المكالمات المتعددة التي تمر بنفس المجموعة من eventNamelistener إلى إضافة listener واستدعاؤها عدة مرات.

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

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

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

المعلمات

eventName

string | symbol

اسم الحدث.

listener

(args: any[]) => void

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

المرتجعات

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

المعلمات

eventName

string | symbol

اسم الحدث.

listener

(args: any[]) => void

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

المرتجعات

موروث من EventEmitter.prependOnceListener

rawListeners<K>(string | symbol)

إرجاع نسخة من صفيف المستمعين للحدث المسمى eventName، بما في ذلك أي برامج تضمين (مثل تلك التي تم إنشاؤها بواسطة .once()).

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

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

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

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

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

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

المعلمات

eventName

string | symbol

المرتجعات

Function[]

موروث من EventEmitter.rawListeners

removeAllListeners(string | symbol)

إزالة كافة وحدات الاستماع، أو تلك الخاصة eventNameالمحددة.

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

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

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

المعلمات

eventName

string | symbol

المرتجعات

موروث من EventEmitter.removeAllListeners

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

يزيل listener المحدد من صفيف وحدة الاستماع للحدث المسمى eventName.

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

سيقوم removeListener()، على الأكثر، بإزالة مثيل واحد من وحدة الإصغاء من صفيف وحدة الاستماع. إذا تمت إضافة أي وحدة استماع واحدة عدة مرات إلى صفيف وحدة الاستماع eventNameالمحدد ، فيجب استدعاء removeListener() عدة مرات لإزالة كل مثيل.

بمجرد إصدار حدث، يتم استدعاء جميع المستمعين المرفقين به في وقت الانبعاث بالترتيب. وهذا يعني أن أي مكالمات removeListener() أو removeAllListeners()بعد إصدارقبل آخر وحدة استماع تنتهي من التنفيذ لن تزيلها منemit() قيد التقدم. تتصرف الأحداث اللاحقة كما هو متوقع.

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

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

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

myEmitter.on('event', callbackA);

myEmitter.on('event', callbackB);

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

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

نظرا لأنه تتم إدارة المستمعين باستخدام صفيف داخلي، سيؤدي استدعاء هذا إلى تغيير فهارس موضع أي وحدة استماع مسجلة بعد إزالة وحدة الاستماع. لن يؤثر هذا على الترتيب الذي يتم استدعاء المستمعين به، ولكنه يعني أن أي نسخ من صفيف وحدة الاستماع كما تم إرجاعها بواسطة أسلوب emitter.listeners() ستحتاج إلى إعادة إنشائها.

عند إضافة دالة واحدة كمعالج عدة مرات لحدث واحد (كما في المثال أدناه)، سيقوم removeListener() بإزالة المثيل الذي تمت إضافته مؤخرا. في المثال، تتم إزالة وحدة الاستماع once('ping'):

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

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

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

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

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

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

المعلمات

eventName

string | symbol

listener

(args: any[]) => void

المرتجعات

موروث من EventEmitter.removeListener

setMaxListeners(number)

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

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

function setMaxListeners(n: number): Twin

المعلمات

n

number

المرتجعات

موروث من EventEmitter.setMaxListeners

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

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

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

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

المعلمات

n

number

رقم غير سالب. الحد الأقصى لعدد المستمعين لكل EventTarget حدث.

eventTargets

(EventEmitter<DefaultEventMap> | EventTarget)[]

صفر أو أكثر من حالات {EventTarget} أو {EventEmitter}. إذا لم يتم تحديد أي شيء، n يتم تعيين الحد الأقصى الافتراضي لجميع كائنات {EventTarget} و{EventEmitter} التي تم إنشاؤها حديثا.

موروث من EventEmitter.setMaxListeners

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

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

المعلمات

error

Error

event

string | symbol

args

AnyRest

الموروث من EventEmitter.__@captureRejectionSymbol@141