컨텐츠로 건너뛰기

TaskEmitter

TaskEmitterTaskQueue에 의해 관리되는 비동기 태스크를 위한 이벤트 에미터 클래스입니다.

import

import { TaskEmitter } from "@tai-kun/surrealdb/utils";

.constructor()

new TaskEmitter<T>();

매개변수

T

이벤트 이름과 이벤트가 사용하는 인수(배열)를 key-value 형태로 나타낸 타입입니다.

반환값

new를 통해 호출될 경우, TaskEmitter는 해당 인스턴스를 반환합니다.

.on() 인스턴스 메서드

.on은 이벤트 에미터에 이벤트 리스너를 등록하는 함수입니다. 동일한 이벤트에 동일한 함수를 여러 번 등록하려고 하면, 처음 한 번을 제외하고는 등록이 무시됩니다.

on(event: string | number, listener: TaskListener): void;

매개변수

event

이벤트 리스너를 등록할 이벤트의 이름입니다.

listener

등록할 이벤트 리스너입니다. 이 함수에는 TaskQueue의 태스크 러너와 동일한 인수가 제공되며, 이후에는 .emit에 전달된 인수가 가변 길이로 전달됩니다.

반환값

없음.

예시

다음 예시는 “log” 이벤트를 수집하여 에미터에 전달된 값을 표준 출력에 표시합니다.

import { TaskEmitter } from "@tai-kun/surrealdb/utils";
type Events = {
log: string[];
};
const emitter = new TaskEmitter<Events>();
emitter.on("log", (_, ...args) => {
console.log(...args);
});
emitter.emit("log", "Hello");
emitter.emit("log", "World", "!!!");
await emitter.idle();

출력:

Hello
World !!!

.off() 인스턴스 메서드

.off는 이벤트 에미터에서 이벤트 리스너를 등록 해제하는 함수입니다. 이벤트 리스너를 생략하면, 대상 이벤트 이름에 등록된 모든 이벤트 리스너가 등록 해제됩니다.

off(event: string | number, listener?: TaskListener): void;

매개변수

event

이벤트 리스너를 등록 해제할 이벤트의 이름입니다.

listener

등록 해제할 이벤트 리스너입니다. 이를 생략하면, 대상 event에 등록된 모든 이벤트 리스너가 등록 해제됩니다.

반환값

없음.

.once() 인스턴스 메서드

.once.on과 유사하지만, 이벤트를 한 번만 수집합니다. 또한 콜백 함수가 아닌, 반환값인 StatefulPromise로 값을 받습니다.

once(
event: string | Number,
options?: TaskListenerOptions,
): StatefulPromise<unknown[]>;

예시

다음 예시는 “log” 이벤트를 한 번만 수집하여 에미터에 전달된 값을 표준 출력에 표시합니다.

import { TaskEmitter } from "@tai-kun/surrealdb/utils";
type Events = {
log: string[];
};
const emitter = new TaskEmitter<Events>();
const promise = emitter.once("log");
emitter.emit("log", "Hello");
emitter.emit("log", "World", "!!!");
const recived = await promise;
console.log(recived);
await emitter.idle();

출력:

[ 'Hello' ]

매개변수

event

대기할 이벤트의 이름입니다.

options

이벤트 리스너의 옵션입니다. 중지 신호를 전달할 수 있습니다.

반환값

.emit의 인수(배열)로 해결되는 StatefulPromise를 반환합니다.

.emit() 인스턴스 메서드

.emit은 이벤트 리스너에 값을 전송하는 함수입니다.

emit(
event: string | number,
...args: unknown[]
): undefined | StatefulPromise<unknown>[];

매개변수

event

전송할 이벤트의 이름입니다.

args

전송할 이벤트 리스너에 보낼 값입니다.

반환값

이벤트 리스너가 없으면 undefined를 반환합니다. 이벤트 리스너가 있으면, 해당 리스너가 해결/거부될 때까지 대기하는 StatefulPromise 배열을 반환합니다. 일반적으로 이 StatefulPromise를 처리할 필요는 없습니다. 이벤트에 의해 발생하는 부작용을 현재 컨텍스트에서 대기해야 하거나, 이벤트 리스너의 해결/거부에 관심이 있을 때 사용할 수 있습니다.

.idle() 인스턴스 메서드

.idle은 현재 실행 중인 모든 이벤트 리스너의 완료를 대기하는 함수입니다.

idle(): StatefulPromise<void>;

매개변수

없음.

반환값

void로 해결되는 StatefulPromise를 반환합니다.

.abort() 인스턴스 메서드

.abort는 모든 이벤트 리스너의 signal에 중지 이벤트를 전송하는 함수입니다.

abort(reason?: unknown): void;

매개변수

reason

중지 사유입니다.

반환값

없음.