pub-sub-topic-ts
Version:
PubSub Library Typescript Implementation
36 lines (35 loc) • 896 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Topic = void 0;
class Topic {
constructor(_name) {
this._name = _name;
this._subscribers = [];
this._data = [];
this.name = _name;
}
notifyAll(data) {
for (const subscriber of this._subscribers) {
subscriber.notify(data);
}
}
addSubscriber(subscriber) {
this._subscribers.push(subscriber);
}
removeSubscriber(subscriber) {
this._subscribers = this._subscribers.filter(s => {
return s.id !== subscriber.id;
});
}
publish(data) {
this._data.push(data);
this.notifyAll(this._data);
}
subscribe(subscriber) {
this.addSubscriber(subscriber);
}
unsubscribe(subscriber) {
this.removeSubscriber(subscriber);
}
}
exports.Topic = Topic;