webamp/js/emitter.js
2018-04-03 06:50:06 -07:00

22 lines
521 B
JavaScript

export default class Emitter {
on(event, callback) {
const eventListeners = this._listeners[event] || [];
eventListeners.push(callback);
this._listeners[event] = eventListeners;
const unsubscribe = () => {
this._listeners[event] = eventListeners.filter(cb => cb !== callback);
};
return unsubscribe;
}
trigger(event) {
const callbacks = this._listeners[event];
if (callbacks) {
callbacks.forEach(cb => cb());
}
}
constructor() {
this._listeners = {};
}
}