2016-08-25 3 views
0

Ich schreibe eine Messaging-App in Knoten für die Befehlszeile. Es muss in der Lage sein, neu empfangene Nachrichten zu drucken, während dem Benutzer ermöglicht wird, eine Nachricht zu senden, wann immer sie möchte.Sperrmethode für warten auf Eingabe und Ausgabe

Können Sie mir helfen herauszufinden, wie eine Blockierungsmethode erstellt wird, die nach dem Empfang einer bestimmten Eingabe wie "EXIT" beendet wird, aber das Drucken auf der Konsole erlaubt und Eingaben verarbeitet, die nicht mit dem Exit übereinstimmen? Danke im Voraus.

Antwort

2

Das ist in node.js nicht möglich. Wenn Sie andere Ereignistypen erhalten möchten, können Sie den Haupt-JS-Thread nicht blockieren. Javascript in node.js ist single-threaded und ereignisgesteuert. Die einzige Möglichkeit, das nächste Ereignis zu erhalten, besteht darin, nicht blockierend zu sein, sodass der Haupt-JS-Thread das nächste Ereignis in der Ereigniswarteschlange abrufen kann.

Sie können sehr wahrscheinlich die gewünschte Funktionalität mit nicht blockierenden E/A liefern. Sie müssten uns den Code zeigen, den Sie bisher für uns haben, um Ihnen weitere Ratschläge zu geben, wie Sie das mit dem Code, den Sie haben, erreichen können.

Beachten Sie, dass Sie einen node.js Vorgang jederzeit mit process.exit() verlassen können, so dass Sie nur asynchron, ereignisgesteuerte Eingabehandler haben könnten und wann immer es spezifische Eingabe wie EXIT gefunden, wäre es dann process.exit() um den Prozess zu beenden ruft . Bei anderen Eingaben würde es basierend auf dem, was eingegeben wurde, an den entsprechenden Handler gesendet.

Verwandte Themen