2016-06-27 5 views
2

Ich bin neu bei node.js und lerne es im laufenden Betrieb. Ich habe einen Code geschrieben, um Benutzereingaben von CLI mit Timeout anzufordern. Das Problem ist, dass die nachfolgenden Codezeilen ausgeführt werden und nicht angehalten werden, während auf Benutzereingaben gewartet wird. Wie erreiche ich das im Knoten? Unten ist mein CodeKnoten js - Wie pausiere ich die Ausführung nachfolgender Codezeilen, während ich auf Benutzereingaben im Knoten js warte

var readline = require('readline'); 

var rl = readline.createInterface({ 
    input: process.stdin, 
    output: process.stdout 
}); 

waitForUserInput = function (timeout) { 
var timer = setTimeout(function() { 
    console.log("Process Resumed.."); 
    rl.close(); 
}, timeout); 

rl.question("Press Enter to Continue..!!", function() { 
    console.log("Process Resumed.."); 
    clearTimeout(timer); 
    rl.close(); 
});} 

Method Invocation ist

waitForUserInput(5000); 

Ab sofort, wenn ich eine console.log ("Hallo") zu tun; Der Ausgang ist

Prozess pausiert. Drücken Sie die Eingabetaste, um fortzufahren. Hallo

Ich möchte die console.log Nachricht nur nach Benutzereingabe oder Timeout.

+2

Sie können das nicht tun. Verwenden Sie stattdessen Versprechen. – SLaks

+0

Können Sie ein Beispiel geben. –

Antwort

1

Sie sollten niemals die Ausführung eines Node.js-Prozesses stoppen. Node.js ist auf einem EventLoop aufgebaut. In Node.js sollte Ihr Code asynchron arbeiten - Sie fragen den Benutzer nach Tastatureingabe und registrieren einen Code, der ausgelöst wird, sobald der Benutzer die Eingabe beendet hat.

Für jede Art von Kommandozeileneingabe empfehle ich die Verwendung der Inquirer.js package. Sie sollten ein prompt erstellen und die Benutzereingabe im then Block behandeln (then wird aufgerufen, wenn ein Versprechen ohne Fehler erfüllt wurde)

+0

Oh danke. Ich werde es versuchen. –