Ich verwende die Eingabeaufforderungsbibliothek für Node.js und habe diesen Code:
%Vor%Wenn die Eingabeaufforderung angezeigt wird, scheint es, dass es die Codeausführung nicht blockiert, aber die Ausführung wird fortgesetzt und die letzten zwei Nachrichten von der Konsole werden angezeigt, während ich die Frage noch beantworten muss.
Gibt es eine Möglichkeit, es zu blockieren?
Da IO in Node nicht blockiert, werden Sie keinen einfachen Weg finden, etwas wie dieses synchron zu machen. Stattdessen sollten Sie den Code in den Rückruf verschieben:
%Vor%oder extrahieren Sie es und rufen Sie die extrahierte Funktion auf:
%Vor% Mit der prompten Bibliothek von flat iron gibt es leider keine Möglichkeit, den Code zu blockieren. Ich könnte jedoch meine eigene sync-prompt
Bibliothek vorschlagen. Wie der Name schon sagt, können Sie Benutzer synchron zur Eingabe auffordern.
Damit würden Sie einfach einen Funktionsaufruf ausgeben und die Eingabezeile des Benutzers zurückholen:
%Vor%Also versuchen Sie es, wenn Sie möchten.
Beachten Sie: Verwenden Sie diese Option NICHT in Webanwendungen . Es sollte nur in Befehlszeilenanwendungen verwendet werden.
Vorpal.js ist eine Bibliothek, die ich gerade erst veröffentlicht habe. Es bietet synchrone Befehlsausführung mit einer interaktiven Eingabeaufforderung, wie Sie es wünschen. Der folgende Code wird tun, was Sie fragen:
%Vor%Mit dem obigen wird die Aufforderung zurückkommen, nachdem eine Sekunde abgelaufen ist (nur nachdem der Rückruf aufgerufen wurde).
Alte Frage, ich weiß, aber ich habe gerade das perfekte Werkzeug dafür gefunden. readline-sync gibt Ihnen eine synchrone Möglichkeit, Benutzereingaben in einem Knotenscript zu sammeln.
Es ist tot einfach zu verwenden und es erfordert keine Abhängigkeiten (ich konnte die sync-Eingabeaufforderung wegen Gyp-Problemen nicht verwenden).
Aus der Github-Liesmich:
%Vor%Ich bin mit dem Projekt in keiner Weise verbunden, aber es hat einfach meinen Tag gemacht, also musste ich es teilen.
Ich habe diesen Thread und alle Lösungen entweder gefunden:
Und aus diesem Grund habe ich syncprompt
erstellt
. Installiere es mit npm i --save syncprompt
und füge dann einfach hinzu:
Zum Beispiel können Sie Folgendes tun:
%Vor%Es unterstützt auch die Eingabe von Passwörtern:
%Vor%