Datenaustausch in Node.js synchronisieren

Rossie

Rear Admiral
Registriert
Dez. 2010
Beiträge
5.322
Howdy,

ich bin gerade dabei einen Plugin-Prototypen für den Atom-Editor zu schreiben. Eine Aufgabe ist es, ein Java-Programm einzubinden. Das funktioniert wunderbar mittels child_process.spawn. Nur leider gibt es einen Usecase, der zwingend eine synchrone Kommunikation/Verarbeitung erfordert, was mir nicht so ohne weiteres gelingen möchte, wenn ich nicht jedes Mal einen neuen Java-Prozess starten, sondern mit dem bereits laufenden Prozess kommunizieren möchte.

Ist der Java-Prozess einmal gestartet, liefert mir ein Callback die Daten.

Code:
service = spawn executable, args
service.stdout.on 'data', (data) ->
    ...

Ziel wäre es jetzt, nach dem Absetzen einer Nachricht mittels

Code:
service.stdin.write(msg)

so lange zu warten, bis die entsprechende Antwort kommt. Darüber informiert ein entsprechendes Event. Nur wie kann ich die Funktion anhalten, bis das Event da ist, ohne die Event-Verarbeitung zu blockieren?

Wäre so etwas mittels node-fibers oder Generators zu lösen? Beides funktioniert momentan mit Atom nicht, wird aber in Zukunft wohl verfügbar sein.

Thanks!
 
Zurück
Oben