Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在node.js中打开接收输入_Javascript_Node.js_Io - Fatal编程技术网

Javascript 如何在node.js中打开接收输入

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

我正在尝试编写一个节点应用程序,它接受用户输入,并在AI轮到它们时阻塞(或者说不接受任何输入)

下面是名为“play”的模块中的play()函数:

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