Ho il seguente codice Node.js che si comporta stranamente:input dell'utente con 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();
Voglio imitare Python di raw_input
, vale a dire la lettura di una linea da parte dell'utente. Dopo aver mostrato la richiesta, il programma dovrebbe essere bloccato fino a quando l'utente non preme Invio.
Se la "riga problematica" è nei commenti, funziona, il programma è in attesa di input. Tuttavia, se questa riga non è nei commenti, il programma non attende l'input e n
diventa undefined
. Perché? Come scrivere una funzione che restituisce l'input dell'utente?
Grazie, ma come fare qualcosa con 'n' dopo? Per esempio, se aggiungo questa riga alla fine di 'main()': 'console.log (Number (n) +1);', quindi è di nuovo problematico. O se voglio leggere due numeri e aggiungere 'n1' e' n2' e stampare il risultato in 'main'. Sì, sono nuovo e grazie per i link utili. – Jabba
Tutto ciò che dovrete fare in seguito deve essere fatto in un callback. Invece di passare console.log, passare una funzione personalizzata con le operazioni successive. –
Se si passa, ad esempio, al main stesso, si otterrà un prompt di pappagallo che ripete l'input e chiede di nuovo. Se passi una funzione effettuando una chiamata di sistema con il tuo input, e chiamando main successivamente otterrai una shell, e così via ... –