class Events {
constructor() {
this.events = {};
}
on(name, callback) {
this.events[name] = this.events[name] || [];
this.events[name].push(callback);
}
off(name, callback) {
this.eachEvent(name, function(ev, i) {
if(ev == callback) {
this.events[name].splice(i, 1);
return true;
}
})
}
emit(name, data) {
this.eachEvent(name, function(ev) {
ev(data);
})
}
eachEvent(name, callback) {
this.events[name] = this.events[name] || [];
for(var i=0; i<this.events[name].length; i++) {
if(callback(this.events[name][i], i)) break;
}
}
}
module.exports = Events;