Skip to content

Instantly share code, notes, and snippets.

@lionelB
Created June 28, 2016 12:38
Show Gist options
  • Save lionelB/7f18aa8fbd5994489ccde04ecd716368 to your computer and use it in GitHub Desktop.
Save lionelB/7f18aa8fbd5994489ccde04ecd716368 to your computer and use it in GitHub Desktop.
a small event dispatcher based on es6 Map/Set
const dispatcher = () => {
const eventMap = new Map()
const getHandlers = (name) => {
if ( !handlers.has(name)) {
handlers.set(name, new Set())
}
return eventMap.get(name)
}
const on = ({name, fn}) => {
const handlers = getHandlers(name)
handlers.add(handler)
return () => {
handlers.delete(handler)
}
}
const dispatch = ({name, payload}) => {
getHandlers(name).forEach((handler) => handler(payload))
}
return { dispatch, on }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment