我想用一些控制台扩展来创建一个简单的服务器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) { }循环?如果服务器在提问时接收输出也很好,它会破坏该行.
我正在Node.js中编写一个程序(在某些情况下)想要充当一个简单的过滤器:从stdin读取所有内容(直到文件末尾),进行一些处理,将结果写入stdout.
你怎么做'从stdin'读取一切?到目前为止我发现的最接近的解决方案,似乎一次从控制台一行一行,或者只在stdin是文件而不是管道时工作.
我的nodejs应用程序中有一个名为get_source_at的函数.它需要一个uri作为参数,其目的是从该uri返回源代码.我的问题是我不知道如何使函数同步调用请求,而不是给它回调函数.我希望控制流停止加载uri所需的几秒钟.我怎样才能做到这一点?
function get_source_at(uri){
    var source;
    request({ uri:uri}, function (error, response, body) {
        console.log(body);
    });
    return source;
}
此外,我已经阅读过关于'事件'以及节点是如何'偶像'的,我应该在编写代码时尊重它.我很高兴这样做,但我必须有一种方法来确保我在继续我的应用程序的控制流之前从uri获得源代码 - 所以如果不是通过使函数同步,那怎么办呢? ?
我需要一个函数来暂停脚本的执行,直到按下一个键.我试过了:
var stdin = process.openStdin(); 
require('tty').setRawMode(true);    
stdin.on('keypress', function (chunk, key) {
  process.stdout.write('Get Chunk: ' + chunk + '\n');
  if (key && key.ctrl && key.name == 'c') process.exit();
});
但它只是在听按键而没有任何反应.该程序不会继续执行.
我该如何暂停执行?
我刚刚开始使用 Node.js,我不知道如何获取用户输入。我正在寻找 python 函数input()或 C 函数的 JavaScript 对应版本gets。谢谢。
我想知道是否有一种简单的方法来获取“同步” readline或至少在node.js中获得同步I / O的外观
我用这样的东西,但是很尴尬
var readline = require('readline');
var rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
  terminal: false
});
var i = 0;
var s1 = '';
var s2 = '';
rl.on('line', function(line){
    if(i==0) { s1 = line; }
    else if(i==1) { s2 = line; }
    i++;
})
rl.on('close', function() {
    //do something with lines
})'
取而代之的是,我希望它像这样简单
var s1 = getline(); // or "await getline()?"
var s2 = getline(); // or "await getline()?"
有用的条件:
(a)建议不要使用外部模块或/ dev / stdio文件句柄,我正在向代码提交网站提交代码,但这些代码在那儿不起作用
(b)可以使用异步/等待或生成器 …
node.js ×6
javascript ×3
console ×1
keypress ×1
readline ×1
request ×1
stdin ×1
synchronous ×1