Twin class
디바이스 쌍은 Azure IoT Hub에 의해 저장되고 디바이스가 오프라인인 경우에도 사용할 수 있는 디바이스의 상태를 설명하는 문서입니다. 다음 3개 섹션을 중심으로 빌드됩니다.
- 태그: 서비스 쪽에서만 액세스할 수 있는 키/값 쌍
- Desired 속성: 서비스에 의해 업데이트되고 디바이스에서 수신됨
- Reported 속성: 디바이스에서 업데이트되고 서비스에서 수신합니다.
가능성이 있지만 desired 및 reported 속성은 일치할 필요가 없으며 필요한 경우 이러한 두 컬렉션을 동기화하는 논리는 SDK 사용자에게 맡깁니다.
자세한 내용은 Device Twins이해하세요.
- Extends
-
EventEmitter
속성
desired |
|
error |
|
properties | desired 및 reported 속성 사전(각각 |
user |
상속된 속성
capture |
값: 부울 모든 새 |
capture |
값: 사용자 지정 |
default |
기본적으로 단일 이벤트에 대해 최대 변경 내용이 변경되기 전에 만든 인스턴스를 포함하여 모든 이것은 어려운 제한이 아닙니다.
내보낸 경고는 |
error |
이 기호는 이 기호를 사용하여 수신기를 설치해도 |
메서드
get() | |
get(Callback<Twin>) | 서비스에서 전체 쌍을 가져옵니다. |
상속된 메서드
add |
제공된 중단 신호에서 이 API를 사용하면 더 쉽게 구독을 취소할 수 있도록 삭제 가능 항목을 반환합니다.
|
add |
에 대한 별칭입니다 |
emit<K>(string | symbol, Any |
등록된 순서대로 이벤트에 수신기가 있으면
|
event |
이미터가 수신기를 등록한 이벤트를 나열하는 배열을 반환합니다. 배열의 값은 문자열 또는
|
get |
|
get |
|
get |
현재 설정된 최대 수신기 양을 반환합니다.
|
listener |
지정된
|
listener |
|
listeners<K>(string | symbol) |
|
off<K>(string | symbol, (args: any[]) => void) | 에 대한 별칭입니다 |
on(Event |
|
on(Event |
|
on<K>(string | symbol, (args: any[]) => void) |
호출을 연결할 수 있도록 기본적으로 이벤트 수신기는 추가되는 순서대로 호출됩니다.
|
once(Event |
이 메서드는 의도적으로 제네릭이며 특별한 이벤트 의미 체계가 없고
|
once(Event |
|
once<K>(string | symbol, (args: any[]) => void) |
이벤트에 대한
호출을 연결할 수 있도록 기본적으로 이벤트 수신기는 추가되는 순서대로 호출됩니다.
|
prepend |
호출을 연결할 수 있도록 |
prepend |
수신기 배열의 시작
호출을 연결할 수 있도록 |
raw |
래퍼(예:
|
remove |
모든 수신기 또는 지정된 특히 다른 구성 요소 또는 모듈(예: 소켓 또는 파일 스트림)에서 호출을 연결할 수 있도록 |
remove |
이벤트가 내보내지면 내보내기 시 연결된 모든 수신기가 순서대로 호출됩니다. 이는 마지막 수신기가 실행을 완료하기 전에 내보내고
수신기는 내부 배열을 사용하여 관리되므로 수신기가 제거될 후 등록된 수신기 단일 함수가 단일 이벤트에 대해 처리기로 여러 번 추가된 경우(아래 예제와 같이)
호출을 연결할 수 있도록 |
set |
기본적으로 호출을 연결할 수 있도록 |
set |
|
[capture |
속성 세부 정보
desiredPath
static desiredPath: string
속성 값
string
errorEvent
static errorEvent: string
속성 값
string
properties
desired 및 reported 속성 사전(각각 properties.desired
및 properties.reported
)입니다.
properties: TwinProperties
속성 값
userRegisteredDesiredPropertiesListener
userRegisteredDesiredPropertiesListener: boolean
속성 값
boolean
상속된 속성 세부 정보
captureRejections
값: 부울
모든 새 captureRejections
개체에서 기본 EventEmitter
옵션을 변경합니다.
static captureRejections: boolean
속성 값
boolean
EventEmitter.captureRejections에서 상속된
captureRejectionSymbol
값: Symbol.for('nodejs.rejection')
사용자 지정 rejection handler
작성하는 방법을 참조하세요.
static captureRejectionSymbol: typeof captureRejectionSymbol
속성 값
typeof captureRejectionSymbol
EventEmitter.captureRejectionSymbol에서 상속된
defaultMaxListeners
기본적으로 단일 이벤트에 대해 최대 10
수신기를 등록할 수 있습니다. 이 제한은 EventEmitter
메서드를 사용하여 개별 emitter.setMaxListeners(n)
인스턴스에 대해 변경할 수 있습니다. 모든RangeError
throw됩니다.
변경 내용이 변경되기 전에 만든 인스턴스를 포함하여 모든emitter.setMaxListeners(n)
호출은 여전히 events.defaultMaxListeners
보다 우선합니다.
이것은 어려운 제한이 아닙니다.
EventEmitter
인스턴스는 더 많은 수신기를 추가할 수 있지만 "가능한 EventEmitter 메모리 누수"가 감지되었음을 나타내는 추적 경고를 stderr에 출력합니다. 단일 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()
get(Callback<Twin>)
서비스에서 전체 쌍을 가져옵니다.
function get(callback?: Callback<Twin>)
매개 변수
- callback
-
Callback<Twin>
쌍을 사용하여 다시 호출해야 하는 선택적 함수이거나 전송에서 트윈을 검색하지 못하는 경우 오류가 발생합니다.
상속된 메서드 세부 정보
addAbortListener(AbortSignal, (event: Event) => void)
제공된 abort
signal
이벤트를 한 번 수신합니다.
중단 신호에서 abort
이벤트를 수신 대기하는 것은 안전하지 않으며 신호가 있는 다른 타사에서 e.stopImmediatePropagation()
호출할 수 있으므로 리소스 누수로 이어질 수 있습니다. 불행히도 Node.js 웹 표준을 위반하기 때문에 이를 변경할 수 없습니다. 또한 원래 API를 사용하면 수신기를 쉽게 제거할 수 있습니다.
이 API를 사용하면 AbortSignal
수신기가 실행되지 않도록 이벤트를 수신 대기하여 이러한 두 가지 문제를 해결하여 Node.js API에서 stopImmediatePropagation
안전하게 사용할 수 있습니다.
더 쉽게 구독을 취소할 수 있도록 삭제 가능 항목을 반환합니다.
import { addAbortListener } from 'node:events';
function example(signal) {
let disposable;
try {
signal.addEventListener('abort', (e) => e.stopImmediatePropagation());
disposable = addAbortListener(signal, (e) => {
// Do something when signal is aborted.
});
} finally {
disposable?.[Symbol.dispose]();
}
}
static function addAbortListener(signal: AbortSignal, resource: (event: Event) => void): Disposable
매개 변수
- signal
-
AbortSignal
- resource
-
(event: Event) => void
반환
Disposable
abort
수신기를 제거하는 삭제 가능
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()
이미터가 수신기를 등록한 이벤트를 나열하는 배열을 반환합니다. 배열의 값은 문자열 또는 Symbol
.
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
경우 이 동작은 방출기에서 .listeners
호출하는 것과 정확히 동일합니다.
EventTarget
이벤트 대상에 대한 이벤트 수신기를 가져오는 유일한 방법입니다. 디버깅 및 진단 용도로 유용합니다.
import { getEventListeners, EventEmitter } from 'node:events';
{
const ee = new EventEmitter();
const listener = () => console.log('Events are fun');
ee.on('foo', listener);
console.log(getEventListeners(ee, 'foo')); // [ [Function: listener] ]
}
{
const et = new EventTarget();
const listener = () => console.log('Events are fun');
et.addEventListener('foo', listener);
console.log(getEventListeners(et, 'foo')); // [ [Function: listener] ]
}
static function getEventListeners(emitter: EventEmitter<DefaultEventMap> | EventTarget, name: string | symbol): Function[]
매개 변수
- emitter
-
EventEmitter<DefaultEventMap> | EventTarget
- name
-
string | symbol
반환
Function[]
EventEmitter.getEventListeners에서 상속된
getMaxListeners()
function getMaxListeners(): number
반환
number
EventEmitter.getMaxListeners에서 상속된
getMaxListeners(EventEmitter<DefaultEventMap> | EventTarget)
현재 설정된 최대 수신기 양을 반환합니다.
EventEmitter
경우 이 동작은 방출기에서 .getMaxListeners
호출하는 것과 정확히 동일합니다.
EventTarget
경우 이벤트 대상에 대한 최대 이벤트 수신기를 가져오는 유일한 방법입니다. 단일 EventTarget의 이벤트 처리기 수가 최대 집합을 초과하면 EventTarget에서 경고를 출력합니다.
import { getMaxListeners, setMaxListeners, EventEmitter } from 'node:events';
{
const ee = new EventEmitter();
console.log(getMaxListeners(ee)); // 10
setMaxListeners(11, ee);
console.log(getMaxListeners(ee)); // 11
}
{
const et = new EventTarget();
console.log(getMaxListeners(et)); // 10
setMaxListeners(11, et);
console.log(getMaxListeners(et)); // 11
}
static function getMaxListeners(emitter: EventEmitter<DefaultEventMap> | EventTarget): number
매개 변수
- emitter
-
EventEmitter<DefaultEventMap> | EventTarget
반환
number
EventEmitter.getMaxListeners에서 상속된
listenerCount(EventEmitter<DefaultEventMap>, string | symbol)
경고
이 API는 이제 사용되지 않습니다.
Since v3.2.0 - Use listenerCount
instead.
지정된 eventName
등록된 지정된 emitter
대한 수신기 수를 반환하는 클래스 메서드입니다.
import { EventEmitter, listenerCount } from 'node:events';
const myEmitter = new EventEmitter();
myEmitter.on('event', () => {});
myEmitter.on('event', () => {});
console.log(listenerCount(myEmitter, 'event'));
// Prints: 2
static function listenerCount(emitter: EventEmitter<DefaultEventMap>, eventName: string | symbol): number
매개 변수
- emitter
-
EventEmitter<DefaultEventMap>
쿼리할 방출기
- eventName
-
string | symbol
이벤트 이름
반환
number
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
반환합니다.
EventEmitter
'error'
내보내면 throw됩니다. 루프를 종료할 때 모든 수신기를 제거합니다. 각 반복에서 반환되는 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
이미 추가되었는지 확인하기 위한 검사는 수행되지 않습니다.
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): Twin
매개 변수
- eventName
-
string | symbol
이벤트의 이름입니다.
- listener
-
(args: any[]) => void
콜백 함수
반환
EventEmitter.on에서 상속된
once(EventEmitter<DefaultEventMap>, string | symbol, StaticEventEmitterOptions)
Promise
지정된 이벤트를 내보내거나 대기하는 동안 EventEmitter
EventEmitter
내보내는 경우 거부되는 'error'
만듭니다.
Promise
지정된 이벤트에 내보낸 모든 인수의 배열로 확인됩니다.
이 메서드는 의도적으로 제네릭이며 특별한 이벤트 의미 체계가 없고 '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[]>
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)
이벤트에 대한 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): Twin
매개 변수
- eventName
-
string | symbol
이벤트의 이름입니다.
- listener
-
(args: any[]) => void
콜백 함수
반환
EventEmitter.once에서 상속된
prependListener<K>(string | symbol, (args: any[]) => void)
listener
이미 추가되었는지 확인하기 위한 검사는 수행되지 않습니다.
eventName
및 listener
동일한 조합을 전달하는 여러 호출은 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()
여러 번 호출해야 합니다.
이벤트가 내보내지면 내보내기 시 연결된 모든 수신기가 순서대로 호출됩니다. 이는 마지막 수신기가 실행을 완료하기 전에 내보내고
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)
기본적으로 EventEmitter
특정 이벤트에 대해 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} 인스턴스가 0개 이상입니다. 지정하지 않으면 새로 만든 모든 {EventTarget} 및 {EventEmitter} 개체에 대한 기본 최대값으로 n
설정됩니다.
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 상속된