ich folgende Node.js Code haben, der seltsam verhält:Benutzereingabe mit node.js
#!/usr/bin/env node
"use strict";
var readline = require('readline');
var rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
function input(prompt) {
rl.question(prompt, function (x) {
rl.close();
console.log("debug: " + x);
return x;
});
}
function main() {
var n = input("Number: ");
// console.log("value: " + n); // problematic line
}
main();
Ich möchte raw_input
Pythons imitieren, das heißt eine Linie vom Benutzer zu lesen. Nachdem die Eingabeaufforderung angezeigt wurde, sollte das Programm blockiert werden, bis der Benutzer die Eingabetaste drückt.
Wenn die "problematische Linie" in Kommentaren ist, funktioniert es, das Programm wartet auf Eingabe. Wenn diese Zeile jedoch nicht in Kommentaren enthalten ist, wartet das Programm nicht auf Eingabe und n
wird undefined
. Warum? Wie schreibe ich eine Funktion, die die Benutzereingabe zurückgibt?
Danke, aber wie macht man danach alles mit 'n'? Wenn ich zum Beispiel diese Zeile am Ende von 'main()': 'console.log (Number (n) +1);' 'anfüge, ist es wieder problematisch. Oder wenn ich zwei Zahlen lesen und 'n1' und' n2' hinzufügen und das Ergebnis in 'main' drucken möchte. Ja, ich bin neu und danke für die nützlichen Links. – Jabba
Alles, was Sie danach tun müssen, muss in einem Callback erfolgen. Übergeben Sie console.log nicht, übergeben Sie eine benutzerdefinierte Funktion mit den nächsten Operationen. –
Wenn Sie zum Beispiel selbst main übergeben, erhalten Sie eine schöne Papagei-Eingabeaufforderung, in der Sie Ihre Eingabe wiederholen und erneut fragen. Wenn Sie eine Funktion übergeben, die mit Ihrer Eingabe einen Systemaufruf macht, und danach main aufrufen, erhalten Sie eine Shell und so weiter ... –