facade-signalr-client
Version:
facade signalr client
54 lines • 1.68 kB
JavaScript
class EventBus {
constructor() {
/**
* 注册监听事件
* @param {string} eventName 事件名称
* @param {ICallback} callback 回调函数
*/
this.on = (eventName, callback) => {
if (!this.callbacks[eventName]) {
this.callbacks[eventName] = [];
}
this.callbacks[eventName].push(callback);
};
/**
* 关闭监听事件
* @param {string} eventName 事件名称
* @param {ICallback} callback 回调函数
*/
this.off = (eventName, callback) => {
const events = this.callbacks[eventName];
if (!events) {
return;
}
let index = -1;
for (let i = 0; i < events.length; i++) {
if (events[i] === callback) {
index = i;
break;
}
}
if (index < 0) {
return;
}
this.callbacks[eventName].splice(index, 1);
};
/**
* 触发事件
* @param {string} eventName 事件名称
* @param {T} args 事件入参
*/
this.trigger = (eventName, ...args) => {
const events = this.callbacks[eventName];
if (!events || !events.length) {
return;
}
for (const callback of events) {
callback.apply(this, args);
}
};
this.callbacks = {};
}
}
export default new EventBus();
//# sourceMappingURL=index.js.map