observer pattern
javascript design pattern
by kazu69
JavaScript
const Subscriber = function() {
this.observers = [];
}
Subscriber.prototype = {
subscribe: function(fn) {
this.observers.push(fn);
return this.observers;
},
unsubscribe: function(fn) {
this.observers = this.observers.filter(v => {
if (v != fn) return v;
});
return this.observers;
},
notify: function(data) {
this.observers.forEach(fn => {
fn.call(null, data);
});
}
}
const eventHandler = (string) => {
console.log('Event:' + string);
}
const eventHandler2 = (string) => {
console.log('Event2:' + string);
}
const s = new Subscriber();
s.subscribe(eventHandler);
s.notify('Hello');
s.subscribe(eventHandler2);
s.notify('Hello');
s.unsubscribe(eventHandler);
s.notify('Hello');