connect-platform
Version:
A platform to build backened code mostly in a visual manner.
32 lines (24 loc) • 702 B
JavaScript
class Subscribable {
constructor() {
this.subscribers = {};
}
subscribe(event, subscriber) {
this.subscribers[event] = this.subscribers[event] || [];
if (this.subscribers[event].indexOf(subscriber) == -1)
this.subscribers[event].push(subscriber);
return this;
}
unsubscribe(event, subscriber) {
if (event in this.subscribers)
this.subscribers[event] = this.subscribers[event].filter(s => s != subscriber);
return this;
}
publish(event, data) {
if (event in this.subscribers) {
for (let subscriber of this.subscribers[event])
subscriber(data, this);
}
return this;
}
}
module.exports = { Subscribable: Subscribable };