Skip to content

Instantly share code, notes, and snippets.

@nishanbajracharya
Created October 17, 2018 12:59
Show Gist options
  • Save nishanbajracharya/7e3ac9940aa3e28bc057939d9a82e027 to your computer and use it in GitHub Desktop.
Save nishanbajracharya/7e3ac9940aa3e28bc057939d9a82e027 to your computer and use it in GitHub Desktop.
Javascript Observer Pattern
const observer = new Observer();
const unsubscribe = observer.subscribe(a => console.log(a));
observer.broadcast('1');
unsubscribe();
observer.broadcast('1');
class Observer {
constructor() {
this.observers = [];
}
subscribe(fn) {
this.observers.push(fn);
return () => this.observers = this.observers.filter(subscriber => subscriber !== fn);
}
broadcast(data) {
this.observers.forEach(subscriber => subscriber(data));
return data;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment