首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从控制台以交互方式读取值

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

Stack Overflow用户
提问于 2011-11-15 05:42:03
回答 10查看 206.9K关注 0票数 167

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

代码语言:javascript
复制
  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) { }循环?同样,如果服务器在提问时收到输出,它会破坏这一行。

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2011-11-15 07:39:04

您不能执行"while(done)“循环,因为这需要阻塞输入,而这是node.js不喜欢做的事情。

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

代码语言:javascript
复制
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() + "]");
  });
票数 189
EN

Stack Overflow用户

发布于 2012-12-01 06:18:12

为此,我使用了另一个API。

代码语言:javascript
复制
var readline = require('readline');
var rl = readline.createInterface(process.stdin, process.stdout);
rl.setPrompt('guess> ');
rl.prompt();
rl.on('line', function(line) {
    if (line === "right") rl.close();
    rl.prompt();
}).on('close',function(){
    process.exit(0);
});

这允许在循环中提示,直到答案为right。此外,它还提供了一个很好的小console.You,可以在@ http://nodejs.org/api/readline.html#readline_example_tiny_cli中找到详细信息

票数 117
EN

Stack Overflow用户

发布于 2016-05-24 22:51:55

自12‘年以来,Readline API发生了很大的变化。文档显示了一个从标准流中捕获用户输入有用示例:

代码语言:javascript
复制
const readline = require('readline');

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

rl.question('What do you think of Node.js? ', (answer) => {
  console.log('Thank you for your valuable feedback:', answer);
  rl.close();
});

More information here.

票数 52
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8128578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档