SharedAccessSignatureAuthenticationProvider class
Biedt een AuthenticationProvider
object dat eenvoudig kan worden gemaakt met een Shared Access Signature en vervolgens wordt gebruikt door de apparaatclient en transporteert voor verificatie met het Azure IoT Hub-exemplaar.
Het SharedAccessSignatureAuthenticationProvider
object vernieuwt het shared access signature-token niet automatisch, dus de gebruiker moet niet-verlopen shared access signature-tokens aan het object invoeren met behulp van de updateSharedAccessSignature
methode . Voor elke aanroep van deze methode verzendt de SharedAccessSignatureAuthenticationProvider
een newTokenAvailable
gebeurtenis die wordt verzonden om te verifiëren bij het Azure IoT Hub-exemplaar.
- Extends
-
EventEmitter
Eigenschappen
type |
Overgenomen eigenschappen
capture |
Waarde: booleaanse waarde Wijzig de standaardoptie |
capture |
Waarde: Lees hoe u een aangepaste |
default |
Standaard kan een maximum aantal Wees voorzichtig bij het instellen van de Dit is geen harde limiet. Met
De De verzonden waarschuwing kan worden geïnspecteerd met |
error |
Dit symbool wordt gebruikt om een listener te installeren voor het bewaken Als u een listener installeert met dit symbool, verandert het gedrag niet zodra een |
Methoden
from |
Hiermee maakt u een nieuwe |
get |
|
get |
Deze methode wordt door de transporten gebruikt om de meest recente apparaatreferenties op te halen in de vorm van een |
stop() | doet niets en retourneert - dit maakt deel uit van de op tokens gebaseerde verificatieprovider-API, maar er zijn hier geen resources om te stoppen/vrij te maken. |
update |
Hiermee wordt het Shared Access Signature-token bijgewerkt dat transporten moeten gebruiken om te verifiëren. Wanneer de wordt aangeroepen, |
Overgenomen methoden
add |
Luistert eenmaal naar de Luisteren naar de Met deze API kunt u veilig s gebruiken Retourneert een wegwerp, zodat deze gemakkelijker kan worden afgemeld.
|
add |
Alias voor |
emit<K>(string | symbol, Any |
Synchroon roept alle listeners aan die zijn geregistreerd voor de gebeurtenis met de naam Retourneert
|
event |
Retourneert een matrix met de gebeurtenissen waarvoor de emitter listeners heeft geregistreerd. De waarden in de matrix zijn tekenreeksen of
|
get |
Retourneert een kopie van de matrix met listeners voor de gebeurtenis met de naam Voor Voor
|
get |
Retourneert de huidige maximale listenerwaarde voor de |
get |
Retourneert het momenteel ingestelde maximumaantal listeners. Voor Voor
|
listener |
Een klassemethode die het aantal listeners retourneert voor de opgegeven
|
listener |
Retourneert het aantal listeners dat luistert naar de gebeurtenis met de naam |
listeners<K>(string | symbol) | Retourneert een kopie van de matrix met listeners voor de gebeurtenis met de naam
|
off<K>(string | symbol, (args: any[]) => void) | Alias voor |
on(Event |
Retourneert een Een
|
on(Event |
|
on<K>(string | symbol, (args: any[]) => void) | Hiermee voegt u de
Retourneert een verwijzing naar de Gebeurtenislisteners worden standaard aangeroepen in de volgorde waarin ze worden toegevoegd. De
|
once(Event |
Hiermee maakt u een Deze methode is opzettelijk algemeen en werkt met de EventTarget-interface van het webplatform, die geen speciale
De speciale verwerking van de
Een
|
once(Event |
|
once<K>(string | symbol, (args: any[]) => void) | Voegt een eenmalige
Retourneert een verwijzing naar de Gebeurtenislisteners worden standaard aangeroepen in de volgorde waarin ze worden toegevoegd. De
|
prepend |
Hiermee voegt u de
Retourneert een verwijzing naar de |
prepend |
Hiermee voegt u een eenmalige
Retourneert een verwijzing naar de |
raw |
Retourneert een kopie van de matrix met listeners voor de gebeurtenis met de naam
|
remove |
Hiermee verwijdert u alle listeners of die van de opgegeven Het is een slechte gewoonte om listeners te verwijderen die elders in de code zijn toegevoegd, met name wanneer het Retourneert een verwijzing naar de |
remove |
Hiermee verwijdert u de die is opgegeven
Zodra een gebeurtenis is verzonden, worden alle listeners die eraan zijn gekoppeld op het moment van verzenden, op volgorde aangeroepen. Dit houdt in dat aanroepen
Omdat listeners worden beheerd met behulp van een interne matrix, worden de positie-indexen gewijzigd van elke listener die is geregistreerd nadat de listener is verwijderd. Dit heeft geen invloed op de volgorde waarin listeners worden aangeroepen, maar het betekent dat kopieën van de listenermatrix zoals geretourneerd door de Wanneer één functie meerdere keren als handler is toegevoegd voor één gebeurtenis (zoals in het onderstaande voorbeeld),
Retourneert een verwijzing naar de |
set |
Retourneert een verwijzing naar de |
set |
|
[capture |
Eigenschapdetails
type
type: AuthenticationType
Waarde van eigenschap
AuthenticationType
Details van overgenomen eigenschap
captureRejections
Waarde: booleaanse waarde
Wijzig de standaardoptie captureRejections
voor alle nieuwe EventEmitter
objecten.
static captureRejections: boolean
Waarde van eigenschap
boolean
Overgenomen van EventEmitter.captureRejections
captureRejectionSymbol
Waarde: Symbol.for('nodejs.rejection')
Lees hoe u een aangepaste rejection handler
schrijft.
static captureRejectionSymbol: typeof captureRejectionSymbol
Waarde van eigenschap
typeof captureRejectionSymbol
Overgenomen van EventEmitter.captureRejectionSymbol
defaultMaxListeners
Standaard kan een maximum aantal 10
listeners worden geregistreerd voor elke gebeurtenis. Deze limiet kan worden gewijzigd voor afzonderlijke EventEmitter
exemplaren met behulp van de emitter.setMaxListeners(n)
methode . Als u de standaardinstelling voor alleEventEmitter
exemplaren wilt wijzigen, kan de events.defaultMaxListeners
eigenschap worden gebruikt. Als deze waarde geen positief getal is, wordt een RangeError
gegenereerd.
Wees voorzichtig bij het instellen van de events.defaultMaxListeners
omdat de wijziging van invloed is op alleEventEmitter
exemplaren, inclusief de exemplaren die zijn gemaakt voordat de wijziging wordt aangebracht. Aanroepen emitter.setMaxListeners(n)
hebben echter nog steeds voorrang op events.defaultMaxListeners
.
Dit is geen harde limiet. Met EventEmitter
het exemplaar kunnen meer listeners worden toegevoegd, maar er wordt een traceringswaarschuwing naar stderr uitgevoerd die aangeeft dat er een 'mogelijk EventEmitter-geheugenlek' is gedetecteerd. Voor één EventEmitter
, kunnen de emitter.getMaxListeners()
methoden en emitter.setMaxListeners()
worden gebruikt om deze waarschuwing tijdelijk te voorkomen:
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));
});
De --trace-warnings
opdrachtregelvlag kan worden gebruikt om de stack-trace voor dergelijke waarschuwingen weer te geven.
De verzonden waarschuwing kan worden geïnspecteerd met process.on('warning')
en heeft de aanvullende emitter
eigenschappen , type
en count
, die respectievelijk verwijzen naar het exemplaar van de gebeurtenisverzender, de naam van de gebeurtenis en het aantal gekoppelde listeners.
De name
eigenschap is ingesteld op 'MaxListenersExceededWarning'
.
static defaultMaxListeners: number
Waarde van eigenschap
number
Overgenomen van EventEmitter.defaultMaxListeners
errorMonitor
Dit symbool wordt gebruikt om een listener te installeren voor het bewaken 'error'
van gebeurtenissen. Listeners die met dit symbool zijn geïnstalleerd, worden aangeroepen voordat de normale 'error'
listeners worden aangeroepen.
Als u een listener installeert met dit symbool, verandert het gedrag niet zodra een 'error'
gebeurtenis wordt verzonden. Daarom loopt het proces nog steeds vast als er geen reguliere 'error'
listener is geïnstalleerd.
static errorMonitor: typeof errorMonitor
Waarde van eigenschap
typeof errorMonitor
Overgenomen van EventEmitter.errorMonitor
Methodedetails
fromSharedAccessSignature(string)
Hiermee maakt u een nieuwe SharedAccessSignatureAuthenticationProvider
van een verbindingsreeks
static function fromSharedAccessSignature(sharedAccessSignature: string): SharedAccessSignatureAuthenticationProvider
Parameters
- sharedAccessSignature
-
string
Een handtekeningtekenreeks voor gedeelde toegang met de vereiste parameters voor verificatie met de IoT-hub.
Retouren
getDeviceCredentials()
function getDeviceCredentials(): Promise<TransportConfig>
Retouren
Promise<TransportConfig>
getDeviceCredentials(Callback<TransportConfig>)
Deze methode wordt door de transporten gebruikt om de meest recente apparaatreferenties op te halen in de vorm van een TransportConfig
-object.
function getDeviceCredentials(callback?: Callback<TransportConfig>)
Parameters
- callback
-
Callback<TransportConfig>
optionele functie die wordt aangeroepen met een fout of een set apparaatreferenties die kunnen worden gebruikt voor verificatie met de IoT-hub.
stop()
doet niets en retourneert - dit maakt deel uit van de op tokens gebaseerde verificatieprovider-API, maar er zijn hier geen resources om te stoppen/vrij te maken.
function stop()
updateSharedAccessSignature(string)
Hiermee wordt het Shared Access Signature-token bijgewerkt dat transporten moeten gebruiken om te verifiëren. Wanneer de wordt aangeroepen, SharedAccessSignatureAuthenticationProvider
wordt een newTokenAvailable
gebeurtenis verzonden die de transporten vervolgens kunnen gebruiken om te verifiëren met het Azure IoT Hub-exemplaar.
function updateSharedAccessSignature(sharedAccessSignature: string)
Parameters
- sharedAccessSignature
-
string
Een handtekeningtekenreeks voor gedeelde toegang met de vereiste parameters voor verificatie met de IoT-hub.
Details overgenomen methode
addAbortListener(AbortSignal, (event: Event) => void)
Luistert eenmaal naar de abort
gebeurtenis op de opgegeven signal
.
Luisteren naar de abort
gebeurtenis bij afbrekingssignalen is onveilig en kan leiden tot resourcelekken omdat een andere derde partij met het signaal kan aanroepen e.stopImmediatePropagation()
. Helaas kan Node.js dit niet wijzigen omdat dit in strijd is met de webstandaard. Bovendien kunt u met de oorspronkelijke API gemakkelijk vergeten listeners te verwijderen.
Met deze API kunt u veilig s gebruiken AbortSignal
in Node.js API's door deze twee problemen op te lossen door naar de gebeurtenis te luisteren, stopImmediatePropagation
zodat de listener niet kan worden uitgevoerd.
Retourneert een wegwerp, zodat deze gemakkelijker kan worden afgemeld.
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
Parameters
- signal
-
AbortSignal
- resource
-
(event: Event) => void
Retouren
Disposable
Wegwerp dat de abort
listener verwijdert.
Overgenomen van EventEmitter.addAbortListener
addListener<K>(string | symbol, (args: any[]) => void)
Alias voor emitter.on(eventName, listener)
.
function addListener<K>(eventName: string | symbol, listener: (args: any[]) => void): SharedAccessSignatureAuthenticationProvider
Parameters
- eventName
-
string | symbol
- listener
-
(args: any[]) => void
Retouren
Overgenomen van EventEmitter.addListener
emit<K>(string | symbol, AnyRest)
Synchroon roept alle listeners aan die zijn geregistreerd voor de gebeurtenis met de naam eventName
, in de volgorde waarin ze zijn geregistreerd, waarbij de opgegeven argumenten aan elk worden doorgegeven.
Retourneert true
als de gebeurtenis listeners had, false
anders.
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
Parameters
- eventName
-
string | symbol
- args
-
AnyRest
Retouren
boolean
Overgenomen van EventEmitter.emit
eventNames()
Retourneert een matrix met de gebeurtenissen waarvoor de emitter listeners heeft geregistreerd. De waarden in de matrix zijn tekenreeksen of Symbol
s.
import { EventEmitter } from 'node:events';
const myEE = new EventEmitter();
myEE.on('foo', () => {});
myEE.on('bar', () => {});
const sym = Symbol('symbol');
myEE.on(sym, () => {});
console.log(myEE.eventNames());
// Prints: [ 'foo', 'bar', Symbol(symbol) ]
function eventNames(): (string | symbol)[]
Retouren
(string | symbol)[]
Overgenomen van EventEmitter.eventNames
getEventListeners(EventEmitter<DefaultEventMap> | EventTarget, string | symbol)
Retourneert een kopie van de matrix met listeners voor de gebeurtenis met de naam eventName
.
Voor EventEmitter
s gedraagt dit zich precies hetzelfde als het aanroepen .listeners
op de emitter.
Voor EventTarget
s is dit de enige manier om de gebeurtenislisteners voor het gebeurtenisdoel op te halen. Dit is handig voor foutopsporing en diagnostische doeleinden.
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[]
Parameters
- emitter
-
EventEmitter<DefaultEventMap> | EventTarget
- name
-
string | symbol
Retouren
Function[]
Overgenomen van EventEmitter.getEventListeners
getMaxListeners()
Retourneert de huidige maximale listenerwaarde voor de EventEmitter
die is ingesteld door emitter.setMaxListeners(n)
of standaard is ingesteld op defaultMaxListeners.
function getMaxListeners(): number
Retouren
number
Overgenomen van EventEmitter.getMaxListeners
getMaxListeners(EventEmitter<DefaultEventMap> | EventTarget)
Retourneert het momenteel ingestelde maximumaantal listeners.
Voor EventEmitter
s gedraagt dit zich precies hetzelfde als het aanroepen .getMaxListeners
op de emitter.
Voor EventTarget
s is dit de enige manier om het maximum aantal gebeurtenislisteners voor het gebeurtenisdoel op te halen. Als het aantal gebeurtenis-handlers op één EventTarget de maximale set overschrijdt, wordt er een waarschuwing afgedrukt door 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
Parameters
- emitter
-
EventEmitter<DefaultEventMap> | EventTarget
Retouren
number
Overgenomen van EventEmitter.getMaxListeners
listenerCount(EventEmitter<DefaultEventMap>, string | symbol)
Waarschuwing
Deze API is nu afgeschaft.
Since v3.2.0 - Use listenerCount
instead.
Een klassemethode die het aantal listeners retourneert voor de opgegeven eventName
die is geregistreerd op de opgegeven 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
Parameters
- emitter
-
EventEmitter<DefaultEventMap>
De emitter om een query uit te voeren
- eventName
-
string | symbol
De gebeurtenisnaam
Retouren
number
Overgenomen van EventEmitter.listenerCount
listenerCount<K>(string | symbol, Function)
Retourneert het aantal listeners dat luistert naar de gebeurtenis met de naam eventName
.
Als listener
wordt opgegeven, wordt geretourneerd hoe vaak de listener wordt gevonden in de lijst met listeners van de gebeurtenis.
function listenerCount<K>(eventName: string | symbol, listener?: Function): number
Parameters
- eventName
-
string | symbol
De naam van de gebeurtenis die wordt beluisterd
- listener
-
Function
De functie gebeurtenis-handler
Retouren
number
Overgenomen van EventEmitter.listenerCount
listeners<K>(string | symbol)
Retourneert een kopie van de matrix met listeners voor de gebeurtenis met de naam 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[]
Parameters
- eventName
-
string | symbol
Retouren
Function[]
Overgenomen van EventEmitter.listeners
off<K>(string | symbol, (args: any[]) => void)
Alias voor emitter.removeListener()
.
function off<K>(eventName: string | symbol, listener: (args: any[]) => void): SharedAccessSignatureAuthenticationProvider
Parameters
- eventName
-
string | symbol
- listener
-
(args: any[]) => void
Retouren
Overgenomen van EventEmitter.off
on(EventEmitter<DefaultEventMap>, string | symbol, 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
Retourneert een AsyncIterator
die gebeurtenissen herhaalt eventName
. Er wordt gegooid als de EventEmitter
verzendt 'error'
. Alle listeners worden verwijderd wanneer de lus wordt afgesloten. De value
geretourneerd door elke iteratie is een matrix die bestaat uit de gegenereerde gebeurtenisargumenten.
Een AbortSignal
kan worden gebruikt om het wachten op gebeurtenissen te annuleren:
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 | symbol, options?: StaticEventEmitterOptions): AsyncIterableIterator<any>
Parameters
- emitter
-
EventEmitter<DefaultEventMap>
- eventName
-
string | symbol
De naam van de gebeurtenis die wordt beluisterd
- options
-
StaticEventEmitterOptions
Retouren
AsyncIterableIterator<any>
Een AsyncIterator
die gebeurtenissen herhaalt eventName
die zijn verzonden door de emitter
Overgenomen van EventEmitter.on
on(EventTarget, string, StaticEventEmitterOptions)
static function on(emitter: EventTarget, eventName: string, options?: StaticEventEmitterOptions): AsyncIterableIterator<any>
Parameters
- emitter
-
EventTarget
- eventName
-
string
- options
-
StaticEventEmitterOptions
Retouren
AsyncIterableIterator<any>
Overgenomen van EventEmitter.on
on<K>(string | symbol, (args: any[]) => void)
Hiermee voegt u de listener
functie toe aan het einde van de listeners-matrix voor de gebeurtenis met de naam eventName
. Er worden geen controles uitgevoerd om te zien of de listener
al is toegevoegd. Meerdere aanroepen die dezelfde combinatie van eventName
en listener
doorgeven, leiden ertoe dat de listener
meerdere keren wordt toegevoegd en aangeroepen.
server.on('connection', (stream) => {
console.log('someone connected!');
});
Retourneert een verwijzing naar de EventEmitter
, zodat aanroepen kunnen worden gekoppeld.
Gebeurtenislisteners worden standaard aangeroepen in de volgorde waarin ze worden toegevoegd. De emitter.prependListener()
methode kan worden gebruikt als alternatief om de gebeurtenislistener toe te voegen aan het begin van de listeners-matrix.
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): SharedAccessSignatureAuthenticationProvider
Parameters
- eventName
-
string | symbol
De naam van de gebeurtenis.
- listener
-
(args: any[]) => void
De callback-functie
Retouren
Overgenomen van EventEmitter.on
once(EventEmitter<DefaultEventMap>, string | symbol, Pick<StaticEventEmitterOptions, "signal">)
Hiermee maakt u een Promise
die wordt uitgevoerd wanneer de EventEmitter
opgegeven gebeurtenis verzendt of die wordt geweigerd als de verzendt 'error'
tijdens het EventEmitter
wachten.
De Promise
wordt opgelost met een matrix van alle argumenten die naar de opgegeven gebeurtenis zijn verzonden.
Deze methode is opzettelijk algemeen en werkt met de EventTarget-interface van het webplatform, die geen speciale'error'
gebeurtenissemantiek heeft en niet naar de 'error'
gebeurtenis luistert.
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);
}
De speciale verwerking van de 'error'
gebeurtenis wordt alleen gebruikt wanneer events.once()
wordt gebruikt om te wachten op een andere gebeurtenis. Als events.once()
wordt gebruikt om te wachten op de 'error'
gebeurtenis zelf, wordt deze behandeld als een ander soort gebeurtenis zonder speciale verwerking:
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
Een AbortSignal
kan worden gebruikt om het wachten op de gebeurtenis te annuleren:
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?: Pick<StaticEventEmitterOptions, "signal">): Promise<any[]>
Parameters
- emitter
-
EventEmitter<DefaultEventMap>
- eventName
-
string | symbol
- options
-
Pick<StaticEventEmitterOptions, "signal">
Retouren
Promise<any[]>
Overgenomen van EventEmitter.once
once(EventTarget, string, StaticEventEmitterOptions)
static function once(emitter: EventTarget, eventName: string, options?: StaticEventEmitterOptions): Promise<any[]>
Parameters
- emitter
-
EventTarget
- eventName
-
string
- options
-
StaticEventEmitterOptions
Retouren
Promise<any[]>
Overgenomen van EventEmitter.once
once<K>(string | symbol, (args: any[]) => void)
Voegt een eenmaligelistener
functie toe voor de gebeurtenis met de naam eventName
. De volgende keer eventName
dat deze listener wordt geactiveerd, wordt deze verwijderd en vervolgens aangeroepen.
server.once('connection', (stream) => {
console.log('Ah, we have our first user!');
});
Retourneert een verwijzing naar de EventEmitter
, zodat aanroepen kunnen worden gekoppeld.
Gebeurtenislisteners worden standaard aangeroepen in de volgorde waarin ze worden toegevoegd. De emitter.prependOnceListener()
methode kan worden gebruikt als alternatief om de gebeurtenislistener toe te voegen aan het begin van de listeners-matrix.
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): SharedAccessSignatureAuthenticationProvider
Parameters
- eventName
-
string | symbol
De naam van de gebeurtenis.
- listener
-
(args: any[]) => void
De callback-functie
Retouren
Overgenomen van EventEmitter.once
prependListener<K>(string | symbol, (args: any[]) => void)
Hiermee voegt u de listener
functie toe aan het begin van de listeners-matrix voor de gebeurtenis met de naam eventName
. Er worden geen controles uitgevoerd om te zien of de listener
al is toegevoegd. Meerdere aanroepen die dezelfde combinatie van eventName
en listener
doorgeven, leiden ertoe dat de listener
meerdere keren wordt toegevoegd en aangeroepen.
server.prependListener('connection', (stream) => {
console.log('someone connected!');
});
Retourneert een verwijzing naar de EventEmitter
, zodat aanroepen kunnen worden gekoppeld.
function prependListener<K>(eventName: string | symbol, listener: (args: any[]) => void): SharedAccessSignatureAuthenticationProvider
Parameters
- eventName
-
string | symbol
De naam van de gebeurtenis.
- listener
-
(args: any[]) => void
De callback-functie
Retouren
Overgenomen van EventEmitter.prependListener
prependOnceListener<K>(string | symbol, (args: any[]) => void)
Hiermee voegt u een eenmaligelistener
functie toe voor de gebeurtenis met de naam eventName
aan het begin van de listeners-matrix. De volgende keer eventName
dat deze listener wordt geactiveerd, wordt deze verwijderd en vervolgens aangeroepen.
server.prependOnceListener('connection', (stream) => {
console.log('Ah, we have our first user!');
});
Retourneert een verwijzing naar de EventEmitter
, zodat aanroepen kunnen worden gekoppeld.
function prependOnceListener<K>(eventName: string | symbol, listener: (args: any[]) => void): SharedAccessSignatureAuthenticationProvider
Parameters
- eventName
-
string | symbol
De naam van de gebeurtenis.
- listener
-
(args: any[]) => void
De callback-functie
Retouren
Overgenomen van EventEmitter.prependOnceListener
rawListeners<K>(string | symbol)
Retourneert een kopie van de matrix met listeners voor de gebeurtenis met de naam eventName
, inclusief eventuele wrappers (zoals die zijn gemaakt door .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[]
Parameters
- eventName
-
string | symbol
Retouren
Function[]
Overgenomen van EventEmitter.rawListeners
removeAllListeners(string | symbol)
Hiermee verwijdert u alle listeners of die van de opgegeven eventName
.
Het is een slechte gewoonte om listeners te verwijderen die elders in de code zijn toegevoegd, met name wanneer het EventEmitter
exemplaar is gemaakt door een ander onderdeel of een andere module (bijvoorbeeld sockets of bestandsstromen).
Retourneert een verwijzing naar de EventEmitter
, zodat aanroepen kunnen worden gekoppeld.
function removeAllListeners(eventName?: string | symbol): SharedAccessSignatureAuthenticationProvider
Parameters
- eventName
-
string | symbol
Retouren
Overgenomen van EventEmitter.removeAllListeners
removeListener<K>(string | symbol, (args: any[]) => void)
Hiermee verwijdert u de die is opgegeven listener
uit de listenermatrix voor de gebeurtenis met de naam eventName
.
const callback = (stream) => {
console.log('someone connected!');
};
server.on('connection', callback);
// ...
server.removeListener('connection', callback);
removeListener()
verwijdert maximaal één exemplaar van een listener uit de listenermatrix. Als een enkele listener meerdere keren is toegevoegd aan de listenermatrix voor de opgegeven eventName
, removeListener()
moet meerdere keren worden aangeroepen om elk exemplaar te verwijderen.
Zodra een gebeurtenis is verzonden, worden alle listeners die eraan zijn gekoppeld op het moment van verzenden, op volgorde aangeroepen. Dit houdt in dat aanroepen removeListener()
of removeAllListeners()
aanroepen na het verzenden en voordat de uitvoering van de laatste listener is voltooid, deze niet verwijderen uitemit()
wordt uitgevoerd. Volgende gebeurtenissen gedragen zich zoals verwacht.
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
Omdat listeners worden beheerd met behulp van een interne matrix, worden de positie-indexen gewijzigd van elke listener die is geregistreerd nadat de listener is verwijderd. Dit heeft geen invloed op de volgorde waarin listeners worden aangeroepen, maar het betekent dat kopieën van de listenermatrix zoals geretourneerd door de emitter.listeners()
methode opnieuw moeten worden gemaakt.
Wanneer één functie meerdere keren als handler is toegevoegd voor één gebeurtenis (zoals in het onderstaande voorbeeld), removeListener()
wordt de meest recent toegevoegde instantie verwijderd. In het voorbeeld is de once('ping')
listener verwijderd:
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');
Retourneert een verwijzing naar de EventEmitter
, zodat aanroepen kunnen worden gekoppeld.
function removeListener<K>(eventName: string | symbol, listener: (args: any[]) => void): SharedAccessSignatureAuthenticationProvider
Parameters
- eventName
-
string | symbol
- listener
-
(args: any[]) => void
Retouren
Overgenomen van EventEmitter.removeListener
setMaxListeners(number)
EventEmitter
Standaard wordt met s een waarschuwing afgedrukt als er meer dan 10
listeners zijn toegevoegd voor een bepaalde gebeurtenis. Dit is een handige standaard die helpt bij het vinden van geheugenlekken. Met de emitter.setMaxListeners()
methode kan de limiet worden gewijzigd voor dit specifieke EventEmitter
exemplaar. De waarde kan worden ingesteld op Infinity
(of 0
) om een onbeperkt aantal listeners aan te geven.
Retourneert een verwijzing naar de EventEmitter
, zodat aanroepen kunnen worden gekoppeld.
function setMaxListeners(n: number): SharedAccessSignatureAuthenticationProvider
Parameters
- n
-
number
Retouren
Overgenomen van 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)[])
Parameters
- n
-
number
Een niet-negatief getal. Het maximum aantal listeners per EventTarget
gebeurtenis.
- eventTargets
-
(EventEmitter<DefaultEventMap> | EventTarget)[]
Overgenomen van EventEmitter.setMaxListeners
[captureRejectionSymbol]<K>(Error, string | symbol, AnyRest)
function [captureRejectionSymbol]<K>(error: Error, event: string | symbol, args: AnyRest)
Parameters
- error
-
Error
- event
-
string | symbol
- args
-
AnyRest
Overgenomen van EventEmitter.__@captureRejectionSymbol@145