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
,该 StatefulPromise
将通过 .emit
的参数(数组)来解析。
.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
中止的原因。
返回值
无。