Skip to content

Instantly share code, notes, and snippets.

@fraserhart
Created November 3, 2020 12:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fraserhart/e0c0a5ed9e0ed1c8fee35e232d779a0e to your computer and use it in GitHub Desktop.
Save fraserhart/e0c0a5ed9e0ed1c8fee35e232d779a0e to your computer and use it in GitHub Desktop.
JS Event Emitter implementation
class EventEmitter{
constructor(){
this.events = {}
}
on(event, callback){
if (!this.events.hasOwnProperty(event)){
this.events[event] = [];
}
this.events[event].push(callback);
}
emit(event, ...args){
this.events[event].forEach((fn) => {
fn(...args)
})
}
removeListener(event, callback) {
this.events[event] = this.events[event].filter(cbk => callback !== cbk)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment