27 lines
803 B
JavaScript
27 lines
803 B
JavaScript
export const EventEmitter = {
|
|
events: {},
|
|
lastUid: -1,
|
|
dispatch: function (event, data) {
|
|
if (!this.events[event]) return;
|
|
for (let token of Object.keys(this.events[event])) {
|
|
const callback = this.events[event][token];
|
|
if (callback && typeof callback == "function") callback(data);
|
|
}
|
|
},
|
|
subscribe: function (event, callback) {
|
|
if (!callback) return;
|
|
if (!this.events[event]) this.events[event] = {};
|
|
const token = "uID_" + String(++this.lastUid);
|
|
this.events[event][token] = callback;
|
|
return token;
|
|
},
|
|
unsubscribe: function (...tokens) {
|
|
for (let k of Object.keys(this.events)) {
|
|
let toks = Object.keys(this.events[k]);
|
|
for (let tok of toks) {
|
|
if (tokens.includes(tok)) delete this.events[k][tok];
|
|
}
|
|
}
|
|
},
|
|
};
|