Skip to content

Instantly share code, notes, and snippets.

@afterburn
Last active January 15, 2018 10:31
Show Gist options
  • Save afterburn/a5ae55f373e77eca2325cb6b0be65f60 to your computer and use it in GitHub Desktop.
Save afterburn/a5ae55f373e77eca2325cb6b0be65f60 to your computer and use it in GitHub Desktop.
Simple EventEmitter
class EventEmitter {
constructor () {
this.events = {}
}
on (event, callback) {
if (!this.events.hasOwnProperty(event)) {
this.events[event] = []
}
this.events[event].push(callback)
}
call () {
const event = arguments[0]
const newargs = [...arguments].splice(0).slice(1, arguments.length)
if (this.events.hasOwnProperty(event)) {
this.events[event].forEach(callback => callback.bind(null, ...newargs)())
}
}
}
const Events = new EventEmitter()
Events.on('ready', function() {
console.log('ready event called')
})
Events.call('ready')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment