从控制台以交互方式读取值

node.js Node.js

小宇宙

2020-03-24

我想做一个带有控制台扩展的简单服务器http服务器。我找到了要从命令行数据读取的代码段。

  var i = rl.createInterface(process.stdin, process.stdout, null);
  i.question('Write your name: ', function(answer) {
    console.log('Nice to meet you> ' + answer);
    i.close();
    process.stdin.destroy();

  });

好再问一次问题,我不能简单地使用while(done) { }循环?如果服务器在询问时间接收到输出,也会破坏线路。

第3708篇《从控制台以交互方式读取值》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

1个回答
Itachi 2020.03.24

您不能执行“ while(done)”循环,因为这将需要阻塞输入,而node.js则不喜欢这样做。

而是设置一个在每次输入内容时调用的回调:

var stdin = process.openStdin();

stdin.addListener("data", function(d) {
    // note:  d is an object, and when converted to a string it will
    // end with a linefeed.  so we (rather crudely) account for that  
    // with toString() and then trim() 
    console.log("you entered: [" + 
        d.toString().trim() + "]");
  });

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android