js发布订阅模式

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
export var msgHandler = {};

/**
* 消息队列
*/
msgHandler.msgQueue = {};

/**
* 订阅消息
* @param {消息类型} eventType
* @param {回调方法} handler
*/
msgHandler.on = (eventType, handler) => {
if (!(eventType in msgHandler.msgQueue)) {
msgHandler.msgQueue[eventType] = [];
}

msgHandler.msgQueue[eventType].push(handler);
}

/**
* 订阅
* @param {消息类型}} eventType
* @param {数据} data
*/
msgHandler.emit = (eventType, data) => {
for (var i = 0; msgHandler.msgQueue[eventType] && i < msgHandler.msgQueue[eventType].length; i++) {
msgHandler.msgQueue[eventType][i].call(this, data);
}
}

/**
*
* @param {消息类型}} eventType
* @param {回调方法} handler
*/
msgHandler.off = (eventType, handler) => {
var currentEvent = msgHandler.msgQueue[eventType];
var len = 0;
if (currentEvent) {
len = currentEvent.length;
for (var i = len - 1; i >= 0; i--) {
if (currentEvent[i] === handler) {
currentEvent.splice(i, 1);
}
}
}
}


js发布订阅模式
https://zhaops-hub.github.io/2022/03/21/js/js发布订阅模式/
作者
赵培胜
发布于
2022年3月21日
许可协议