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.
Ziel wäre es jetzt, nach dem Absetzen einer Nachricht mittels
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!
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!