Skip to content

Instantly share code, notes, and snippets.

@maggiben
Created August 26, 2021 23:36
Show Gist options
  • Save maggiben/f05224783f3dfd7292c85e97adf262ae to your computer and use it in GitHub Desktop.
Save maggiben/f05224783f3dfd7292c85e97adf262ae to your computer and use it in GitHub Desktop.
Very Basic EventEmitter implementation
/* Very basic EventEmitter class */
class EventEmitter {
constructor() {
this.events = new Map();
}
on(eventname, callback) {
if(this.events.has(eventname)) {
const events = this.events.get(eventname);
events.push(callback);
return this.events.set(eventname, events);
}
return this.events.set(eventname, [callback]);
}
off(eventname, callback) {
if(this.events.has(eventname)) {
const events = this.events.get(eventname).filter(clbk => (clbk !== callback));
return this.events.set(eventname, events);
}
return undefined;
}
emit(eventname, ...args) {
if (this.events.has(eventname)) {
this.events.get(eventname).forEach(function(callback) {
callback.apply(this, args);
});
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment