相关疑难解决方法(0)

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

我想用一些控制台扩展来创建一个简单的服务器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();

  });
Run Code Online (Sandbox Code Playgroud)

好好反复问问题,我不能简单地使用while(done) { }循环?如果服务器在提问时接收输出也很好,它会破坏该行.

console node.js

145
推荐指数
8
解决办法
17万
查看次数

等待用户在Node.js中输入输入

我理解Node.js中异步事件的基本原理,我正在学习如何以这种方式编写代码.但是,我遇到以下情况:

我想编写偶尔暂停用户输入的代码.

该程序不是作为服务器(虽然目前它是用于命令行).我意识到这是Node的非典型用法.我的目标是最终将程序迁移回客户端Javascript应用程序,但我发现在Node.js中工作既迷人又对调试非常有用.这让我回到我的例子来说明问题:

它读入一个文本文件并输出每一行,除非该行以"?"结尾.在这种情况下,应暂停用户澄清该行的含义.目前我的程序首先输出所有行,并在最后等待澄清.

有没有办法强制node.js暂停命令行输入,以适应条件触发的情况(即,行以"​​?"结尾)?

var fs = require("fs");
var filename = "";
var i = 0;
var lines = [];

// modeled on http://st-on-it.blogspot.com/2011/05/how-to-read-user-input-with-nodejs.html
var query = function(text, callback) {
    process.stdin.resume();
    process.stdout.write("Please clarify what was meant by: " + text);
    process.stdin.once("data", function(data) {
        callback(data.toString().trim());
    });
};

if (process.argv.length > 2) {
    filename = process.argv[2];
    fs.readFile(filename, "ascii", function(err, data) {
        if (err) {
            console.error("" + err);
            process.exit(1);
        }
        lines = data.split("\n");
        for (i = 0; i < lines.length; i++) { …
Run Code Online (Sandbox Code Playgroud)

node.js

35
推荐指数
3
解决办法
3万
查看次数

标签 统计

node.js ×2

console ×1