Mam i aplikacji napisanych w NodeJS z Express i próbuję użyć EventEmitter do stworzenia architektury wtyczki z wtyczkami do głównego kodu, słuchając emitowanych zdarzeń.NodeJS czekać na oddzwonienie, aby zakończyć na wydarzenie emitować
Mój problem pojawia się, gdy funkcja wtyczki wysyła żądanie asynchroniczne (w tym przypadku pobiera dane z mongo), co powoduje zakończenie kodu wtyczki i powrót do oryginalnego nadajnika, który zakończy wykonywanie, przed żądaniem asynchronicznym w zakończeniu kodu wtyczki.
Np
główna 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!
}
Mój powód do unikania funkcję zwrotną z powrotem do głównego kodu z funkcja 'getFromMongo' jest to, że może być 0 lub wiele wtyczek nasłuchujących zdarzenia. Idealnie chcę jakiś sposób, aby czekać na rzeczy DB zakończyć przed powrotem kontrolę do głównej aplikacji
Dziękujemy