1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import { EventEmitter } from 'events';
/**
* 事件
*
* @export
* @class IBzEventEmitter
*/
export class AppEventEmitter<K, V> {
/**
* 事件对象
*
* @private
* @memberof AppEventEmitter
*/
private readonly e = new EventEmitter();
/**
* 注册事件
*
* @param {K} eventName 事件名称
* @param {(data: V) => void} callback 回调
* @memberof AppEventEmitter
*/
on(eventName: K, callback: (data: V) => void): void {
this.e.on(eventName as any, callback);
}
/**
* 订阅一次
*
* @param {K} eventName 事件名称
* @param {(data: V) => void} callback 回调
* @memberof AppEventEmitter
*/
once(eventName: K, callback: (data: V) => void): void {
this.e.once(eventName as any, callback);
}
/**
* 发送事件
*
* @param {K} eventName 事件名称
* @param {V} data 发送数据
* @memberof AppEventEmitter
*/
emit(eventName: K, data: V): void {
this.e.emit(eventName as any, data);
}
/**
* 取消订阅
*
* @param {K} eventName 事件名称
* @param {(data: V) => void} callback 注册时的回调
* @memberof IBzEventEmitter
*/
off(eventName: K, callback: (data: V) => void): void {
this.e.off(eventName as any, callback);
}
}