Node.js synchrone Eingabeaufforderung

8

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?

    
Matteo Pagliazzi 20.08.2012, 17:52
quelle

6 Antworten

4

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%     
Michelle Tilley 20.08.2012, 18:01
quelle
10

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.

    
Salehen Rahman 21.05.2014 16:27
quelle
2

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).

    
dthree 01.10.2015 21:18
quelle
1

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.

    
Dominic P 16.09.2016 20:46
quelle
1

Ich habe diesen Thread und alle Lösungen entweder gefunden:

  • Stellen Sie keine synchrone prompte Lösung zur Verfügung
  • Sind veraltet und funktionieren nicht mit neuen Versionen von Knoten.

Und aus diesem Grund habe ich syncprompt erstellt . Installiere es mit npm i --save syncprompt und füge dann einfach hinzu:

%Vor%

Zum Beispiel können Sie Folgendes tun:

%Vor%

Es unterstützt auch die Eingabe von Passwörtern:

%Vor%     
Downgoat 11.01.2017 16:04
quelle
1

Seit Node.js 8 können Sie Folgendes mit async / await tun:

%Vor%     
macalaca 12.10.2017 01:37
quelle

Tags und Links