Ich habe und Anwendung in NodeJS mit Express geschrieben und versuche, EventEmitter zu verwenden, um eine Art Plugin-Architektur mit Plugins Hooking in den Hauptcode durch Anhören emittierter Ereignisse zu erstellen.NodeJS warten auf Callback zum Beenden auf Ereignis emittieren
Mein Problem kommt, wenn eine Plugin-Funktion eine asynchrone Anfrage macht (um in diesem Fall Daten von mongo zu erhalten), dies bewirkt, dass der Plugin-Code endet und die Kontrolle an den ursprünglichen Emitter zurückgibt, der dann die Ausführung vor der asynchronen Anfrage beendet im Plugin-Code endet.
ZB:
Haupt 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!
}
Mein Grund, eine Callback-Funktion zurück zum Hauptcode von den 'getFromMongo' Funktion zur Vermeidung ist, dass es kann 0 oder viele Plugins sein, die dem Ereignis zuhören. Im Idealfall einen Weg Ich will warten, bis die DB Sachen, bevor die Steuerung an die Haupt App
Vielen Dank Rückkehr zu beenden