TaskEmitter
TaskEmitter
是一个用于管理由 TaskQueue
管理的异步任务的事件发射器类。
导入
import { TaskEmitter } from "@tai-kun/surrealdb/utils";
.constructor()
new TaskEmitter<T>();
参数
T
一个键值对类型,表示事件名和事件参数(数组)。
返回值
如果通过 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
事件监听器的选项。可以传递中止信号。
返回值
返回一个 StatefulPromise
,其通过 .emit
的参数(数组)解析。
.emit()
实例 方法
.emit
函数用于向事件监听器发送值。
emit( event: string | number, ...args: unknown[]): undefined | StatefulPromise<unknown>[];
参数
event
目标事件名称。
args
发送给目标事件监听器的值。
返回值
如果没有事件监听器,则返回 undefined
。如果有事件监听器,则返回一个 StatefulPromise
数组,该数组将等待这些 StatefulPromise
解析/拒绝。通常不需要处理此 StatefulPromise
。只有当需要在当前上下文中等待事件引起的副作用,或者关心事件监听器的解析/拒绝时才使用它。
.idle()
实例 方法
.idle
函数用于等待所有当前正在运行的事件监听器完成。
idle(): StatefulPromise<void>;
参数
无。
返回值
返回一个以 void
解析的 StatefulPromise
。
.abort()
实例 方法
.abort
函数用于向所有事件监听器的 signal
发送中止事件。
abort(reason?: unknown): void;
参数
reason
中止的原因。
返回值
无。