JSFiddle - React, Tailwind, and code Playground
by Farzad YZ
JavaScript
function eventEmitter(all) {
all = all || {};
return {
on(type, handler) {
(all[type] || (all[type] = [])).push(handler);
},
off(type, handler) {
all[type] && all[type].splice(all[type].indexOf(handler), 1);
},
emit(type, evt) {
var len = all.length, handlers = all[type].slice();
for (var i = 0; i < len; i++) {
handlers[i](evt);
}
}
};
}
var events = Object.create(null);
var emitter = eventEmitter(events);
emitter.on('test', function fn1() {
console.log('Event1');
emitter.off('test', fn1);
});
emitter.on('test', function fn2() {
console.log('Event2');
emitter.off('test', fn2);
});
emitter.emit('test')