컨텐츠로 건너뛰기

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

중단 사유입니다.

반환값

없음.