Skip to content

Instantly share code, notes, and snippets.

@firthous-dev
Created October 16, 2022 13:56
Show Gist options
  • Select an option

  • Save firthous-dev/eb522ce9b10ea2a6b84c2b2060876c4e to your computer and use it in GitHub Desktop.

Select an option

Save firthous-dev/eb522ce9b10ea2a6b84c2b2060876c4e to your computer and use it in GitHub Desktop.
const eventMap = new Map();
export function publish(event){
let eventName = event.constructor.name
if(eventName && eventMap.has(eventName)){
eventMap.get(eventName).forEach(listener => listener(event.args))
}
}
export function subscribe(eventClass, listener){
let eventName = eventClass.name
if(!eventMap.has(eventName)){
eventMap.set(eventName, new Set());
}
eventMap.get(eventName).add(listener);
return{
unsubscribe: function unsubscribe(){
eventMap.get(eventName).delete(listener);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment