Created
May 1, 2017 22:47
-
-
Save ajchambeaud/1cf93a7d06e6959203e19f01496d263d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Implementacion simple de un EventEmitter en node.js | |
class Emitter { | |
constructor() { | |
this.subscriptors = {}; | |
} | |
emit(event, data) { | |
this.subscriptors[event] && this.subscriptors[event].forEach(subscritor => subscritor(data)); | |
} | |
on(event, subscriptor) { | |
if (!this.subscriptors[event]) { | |
this.subscriptors[event] = []; | |
} | |
this.subscriptors[event].push(subscriptor); | |
} | |
} | |
// Uso de la clase Emmitter | |
const emiter = new Emitter(); | |
// Creo una funcion async simple cualquier tipo | |
const getUsersFromDB = () => { | |
const users = ['Juan', 'Maria', 'Pablo']; | |
return Promise.resolve(users); | |
}; | |
// Llamo a la funcion async y cuando obtengo un resultado, emito el evento "result" | |
getUsersFromDB().then(users => emiter.emit('result', users)); | |
// A partir de ahora puedo registrar cualquier cantidad de subscriptores para el evento "result" | |
emiter.on('result', users => { | |
console.log('subscriptor 1'); | |
console.log(users); | |
}); | |
emiter.on('result', users => { | |
console.log('subscriptor 2'); | |
console.log(users); | |
}); | |
emiter.on('result', users => { | |
console.log('subscriptor 3'); | |
console.log(users); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment