Skip to content

Instantly share code, notes, and snippets.

@yoshuawuyts
Last active January 24, 2019 14:07
Show Gist options
  • Save yoshuawuyts/31dace8a9a485ed345d0b37ab4b2db25 to your computer and use it in GitHub Desktop.
Save yoshuawuyts/31dace8a9a485ed345d0b37ab4b2db25 to your computer and use it in GitHub Desktop.
module.exports = class Emitter {
constructor () {
this.listeners = {}
}
on (event, listener) {
if (!this.listeners[event]) this.listeners[event] = []
this.listeners[event].push(listener)
}
emit (event, ...args) {
this.listeners[event].forEach(listener => listener(...args))
}
// BONUS
removeListener (event, listener) {
var index = this.listeners[event].indexOf(listener)
this.listeners[event].splice(index, 1)
}
// BONUS
once (event, listener) {
var self = this
this.on(event, wrapper)
function wrapper (...args) {
self.removeListener(event, wrapper)
listener(...args)
}
}
}
@bcomnes
Copy link

bcomnes commented Mar 21, 2018

Next version of Nanobus?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment