Ich erhalte ein Array von Strings in der Anfrage. Jede Zeichenfolge enthält einen Befehl, der auf der nativen Shell ausgeführt werden soll.
%Vor% Das Ergebnis aller Befehle wird in der Variablen result
durcheinander gebracht. Wie macht man die Funktionsaufrufe in der for
loop synchron?
Verwenden Sie execSync anstelle von exec!
%Vor%Wie andere bereits erwähnt haben, ist dies möglicherweise keine sehr gute Idee, da dadurch die Ereignisschleife und alle Anfragen blockiert werden. Es ist akzeptabel, wenn die ausgeführten Prozesse nur sehr kurz dauern, aber nicht anders.
Hier ist ein einfaches Muster, um den Fluss von asynchronen Funktionen in einer for-Schleife zu steuern ... jedes Mal, wenn ein Prozess zurückkehrt, wird params_finished
um eins erhöht. Sobald die Anzahl der abgeschlossenen Prozesse der Gesamtzahl der Prozesse entspricht, wird die Antwort gesendet.
Eine Alternative wäre, das Äquivalent zu einer Funktion sleep
in der Schleife zu verwenden. Wenn Sie mehr oder weniger wissen, wie lange es für jede Instanz der Schleife dauert.
Siehe diese Antwort für eine vollständige Erklärung, wie dieser Ansatz funktioniert.
Verwenden Sie diese Funktion für eine in Serie synchrone for-Schleife
%Vor%Und Sie benutzen diese Funktion so ...
%Vor%oder wenn Sie
bevorzugen %Vor%Tags und Links javascript node.js