【发布时间】:2015-04-28 08:54:05
【问题描述】:
这是我的一些作业。我希望它读取用户输入,然后创建两个对象,根据用户输入为它们提供值。这是我的代码,从 JS 文件的顶部开始:
console.log("Type 'help' for commands");
console.log("Square numbers:");
console.log("Enter player 1 name");
var player1 = new Player(readLine());
var player2 = new Player(readLine());
console.log("logging name after making players" + player1.name);
function readLine() {
var inputText;
var readline = require('readline');
var rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question("Enter player name? ", function(answer) {
inputText = answer;
console.log("Player name:", answer);
rl.pause();
});
return inputText;
}
这是我得到的输出:http://oi60.tinypic.com/9tn7nn.jpg
我习惯于 C# 和 Java,在这些语言中,readline() 会等待输入,然后使用我输入的任何内容创建对象,然后再进入下一行。虽然不是在 JS 中!它只是继续,在我输入任何内容之前调用 readline() 两次(因此打印两次“prompt>”),然后记录播放器 1 的名称(在输入之前,因此未定义)。然后它等待我输入一些内容,一旦我输入一些内容,它就会将两个玩家都设置为一个名字,然后结束程序。
是否有可能做我想做的事情?有没有另一种方法可以让输入工作而不跳过它并运行其余代码?
提前致谢!
【问题讨论】:
-
你考虑过
readline还是你必须自己为作业写? -
sys已被弃用很久,请使用util! -
@loganfsmyth 谢谢大家,我已将其更改为节点的 readline,但问题仍然存在,它运行 readline() 两次并在我输入任何内容之前继续执行其余代码。跨度>
-
您能更新问题中的代码吗?您现有的代码存在许多问题,使用 Node 的 readline 演示正确的方法会容易得多。
-
@loganfsmyth 已更新。
标签: javascript node.js input console