react-native-template-zygor
Version:
Template para projetos em React Native, com Estrutura de Pastas customizada, Estilos Globais, ESLint + Prettier + Babel Plugin Root Import, React Navigation, Reactotron e Axios configurados.
41 lines (32 loc) • 821 B
JavaScript
/* eslint-disable no-underscore-dangle */
class EventEmitter {
constructor() {
this.events = {};
}
_getEventListByName(eventName) {
if (typeof this.events[eventName] === 'undefined') {
this.events[eventName] = new Set();
}
return this.events[eventName];
}
on(eventName, fn) {
this._getEventListByName(eventName).add(fn);
}
once(eventName, fn) {
const self = this;
const onceFn = function (...args) {
self.removeListener(eventName, onceFn);
fn.apply(self, args);
};
this.on(eventName, onceFn);
}
emit(eventName, ...args) {
this._getEventListByName(eventName).forEach((fn) => {
fn.apply(this, args);
});
}
removeListener(eventName, fn) {
this._getEventListByName(eventName).delete(fn);
}
}
export default EventEmitter;