一尘不染

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

node.js

我想做一个带有控制台扩展的简单服务器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) { }循环?如果服务器在询问时间接收到输出,也会破坏线路。


阅读 218

收藏
2020-07-07

共1个答案

一尘不染

您不能执行“ 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() + "]");
  });
2020-07-07