Ho e applicazione scritta in NodeJS con Express e sto tentando di usare EventEmitter per creare un tipo di architettura plugin con plugin che si agganciano al codice principale ascoltando gli eventi emessi.NodeJS attendi che la richiamata finisca su evento emetta
Il mio problema arriva quando una funzione di plugin fa una richiesta asincrona (per ottenere dati da mongo in questo caso) questo fa sì che il codice del plugin finisca e restituisca il controllo all'emettitore originale che completerà l'esecuzione, prima della richiesta asincrona nel codice del plugin finisce.
Esempio:
principale App:
// We want to modify the request object in the plugin
self.emit('plugin-listener', request);
Plugin:
// Plugin function listening to 'plugin-listener', 'request' is an arg
console.log(request);
// Call to DB (async)
this.getFromMongo(some_data, function(response){
// this may not get called until the plugin function has finished!
}
La ragione per evitare una funzione di callback di nuovo al codice principale dalla funzione 'getFromMongo' è che ci potrebbe essere 0 o molti plugin che ascoltano l'evento. Idealmente voglio un modo per attendere la roba DB per terminare prima di restituire il controllo l'applicazione principale
Molte grazie