5. Observable pattern
by petrussola
JavaScript
const observers = [];
const observable = Object.freeze({
notify: (data) => observers.forEach((observer) => observer(data)),
subscribe: (func) => observers.push(func),
unsubscribe: (func) =>
observers.forEach((observer, index) => {
if (observer === func) {
observers.splice(index, 1);
}
})
});
function logger1(data) {
console.log(`Hello from logger1: ${data}`);
}
function logger2(data) {
console.log(`Hello from logger2: ${data}`);
}
function logger3(data) {
console.log(`Hello from logger3: ${data}`);
}
observable.subscribe(logger1);
observable.subscribe(logger2);
observable.subscribe(logger3);
observable.notify("hey there");
observable.unsubscribe(logger3);
observable.notify("hey there");