TaskEmitter
TaskEmitter
는 TaskQueue
에 의해 관리되는 비동기 작업을 위한 이벤트 에미터 클래스입니다.
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();
출력:
HelloWorld !!!
.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
중단 사유입니다.
반환값
없음.