节点readline接口乘法重复每个字符

时间:2018-01-29 04:58:16

标签: javascript node.js typescript

我用

创建了一个节点readline接口
this.io = readline.createInterface({ 
      input: process.stdin, 
      output: process.stdout,
      completer:(line:string) => { //adapted from Node docs
        const hits = commands.filter((c) => c.startsWith(line.toUpperCase()));
        return [hits.length ? hits : commands, line];
      }
    });

第一次在控制台中输入时,它会正常显示,如> go north。但是,在我接受此输入后,在我的其余代码中使用它,并使用readline再次提示用户,它显示为> ggoo nnoorrtthh,如果我第三次提示,则显示为> gggooo nnnooorrrttthhh 。我在创建界面时尝试使用terminal:false,但它没有改变任何东西。是否有任何东西使我的readline重复字符,我可以乘法输入?

编辑:我还应该补充一点,当我将用户的输入分析到我的代码中时,我得到了正确的输出(它总是返回"向北和#34;),但它基本上输入用户输入两次,然后输入三次,依此类推。

处理输入的代码:

let arg = line.substr(firstSpace+1);
        let shouldProceed = this.handler(cmd, arg); //call handler function!
        if(shouldProceed){
          this.io.prompt();
        } else {
          this.io.close();
        }  
      } 
      else {
        console.log('Invalid command. Commands are:', commands.join(', '));
        this.io.prompt();
      }

shouldProceed总是如此。如果用户键入"退出",则io将关闭。

0 个答案:

没有答案