У меня есть следующий код Node.js, который ведет себя странно:пользовательский ввод с 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();
Я хочу, чтобы имитировать Питона raw_input
, то есть чтение строки от пользователя. После показа подсказки программа должна быть заблокирована до тех пор, пока пользователь не нажмет клавишу Enter.
Если «проблемная строка» находится в комментариях, она работает, программа ждет ввода. Однако, если эта строка не в комментариях, то программа не ждет ввода и n
становится undefined
. Зачем? Как написать функцию, которая возвращает пользовательский ввод?
Спасибо, но как сделать что-нибудь с 'n' после? Например, если я добавлю эту строку в конец 'main()': 'console.log (Number (n) +1);', то это снова проблематично. Или если я хочу прочитать два числа и добавить 'n1' и' n2' и напечатать результат в 'main'. Да, я новичок в этом и благодарю за полезные ссылки. – Jabba
Все, что вы должны делать после этого, должно выполняться в обратном вызове. Вместо передачи console.log передайте пользовательскую функцию со следующими операциями. –
Если вы пройдете, например, сам по себе, вы получите приглашение довольно попугаю, повторяющее ввод и повторное задание. Если вы передадите функцию с системным вызовом с вашим вводом, а затем вызовите main, вы получите оболочку и так далее ... –