【问题标题】:Node Js process.stdin节点 Js 进程.stdin
【发布时间】:2016-05-13 12:19:16
【问题描述】:

我刚刚进入 node.js 并从命令行读取输入。

我对下面的代码示例有点困惑。

process.stdin.setEncoding('utf8');

process.stdin.on('readable', () => {
  var chunk = process.stdin.read();
  if (chunk !== null) {
    process.stdout.write(`data: ${chunk}`);
  }
});

process.stdin.on('end', () => {
  process.stdout.write('end');
});

首先,在 old 模式下,需要process.stdin.resume() 使其开始监听。不使用resume() 对性能更有意义吗?这不是一直在听,耗尽了它不需要耗尽的处理能力吗?

另外,我阅读了文档,但我不明白 'end' 在这里做了什么。

文档说:

当没有更多数据要读取时触发此事件。

但是'readable' 一直在听,所以我们永远无法到达'end'

【问题讨论】:

  • “旧模式”不清楚...nodejs是什么版本?

标签: javascript node.js input


【解决方案1】:

持续监听输入并不一定比手动恢复流使用更多的资源。这只是处理管道的不同方式。

当触发“end”事件时,“可读”部分停止侦听,因为 end 将关闭流,因此将不再有任何可读内容。

结束事件是将触发的结束信号转换为标准输入(例如 unix 系统上的 CTRL/D。

【讨论】:

  • 是否有理由在 node.js readline 模块上使用这个模块?
  • 我相信 readline 被认为是不稳定的,但实际上做同样的事情
猜你喜欢
  • 1970-01-01
  • 2021-02-13
  • 1970-01-01
  • 2022-11-01
  • 2016-02-02
  • 2021-10-17
  • 1970-01-01
  • 2019-10-05
  • 2016-08-05
相关资源
最近更新 更多