Javascript 如何在node.js中打开接收输入
我正在尝试编写一个节点应用程序,它接受用户输入,并在AI轮到它们时阻塞(或者说不接受任何输入) 下面是名为“play”的模块中的play()函数:Javascript 如何在node.js中打开接收输入,javascript,node.js,io,Javascript,Node.js,Io,我正在尝试编写一个节点应用程序,它接受用户输入,并在AI轮到它们时阻塞(或者说不接受任何输入) 下面是名为“play”的模块中的play()函数: function play() { welcome(); stdin.addListener("data", function(d) { var message = ""; input = d.toString().trim(); if(!expression.test(input)) { message
function play() {
welcome();
stdin.addListener("data", function(d) {
var message = "";
input = d.toString().trim();
if(!expression.test(input)) {
message = "Please enter a move of the form 'x, y' and press enter.\n";
print_board(message);
return;
}
input = input.replace(/ /g, "");
user_move = input.split(",");
if(valid_input()) {
update_board();
x_to_play = !(x_to_play);
}
else
message = "Invalid move. Please try again.\n";
print_board(message);
});
}
显然,当用户提供输入时,一切都很顺利。但是当人工智能播放时,我显然不希望用户必须输入一些东西,也不希望他们能够在人工智能嗡嗡作响的时候输入任何东西
解决这个问题的最好办法是什么?我尝试过使用“pause()”,使用while循环,从stdin中删除侦听器和所有侦听器,但没有成功。当我尝试时,我总是遇到有关eventEmitter内存泄漏的问题
if(ai.running){print_board(“ai当前正在运行”);return;}
那一行会去哪里?在回调函数中?在接受任何其他输入之前,请在stdin侦听器中输入In play()。它还没有完成,您需要公开一个running
属性,并在每次启动“ai”时将其设置为true
,在每次完成时将其设置为false
。