为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 Node 的 process.stdin.on('readable') 会触发我的回调一次?

为什么 Node 的 process.stdin.on('readable') 会触发我的回调一次?

翻过高山走不出你 2022-07-21 10:52:18
我有以下代码:process.stdin.on('readable', () => {  const input = process.stdin.read();  console.log(input);});在教程中,回调似乎在循环中触发,但是当我尝试它时,它只被调用一次,然后退出。为什么会这样?我的节点版本是13.12.0
查看完整描述

1 回答

?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

一旦readable事件触发,它不会再次触发,直到流到达末尾或直到您调用.read()并null返回(没有更多数据要读取)。一旦你得到null,那么当有更多数据时它会再次触发。


这就是文档中的示例代码这样做的原因:


const readable = getReadableStreamSomehow();

readable.on('readable', function() {

  // There is some data to read now.

  let data;


  while (data = this.read()) {

    console.log(data);

  }

});

一般来说,这是使用流的一种更困难的方式。如果您在流动模式下使用它们,例如:


process.stdin.on('data', (input) => {

  console.log(input);

});

然后,它只会在数据到达时给您打电话。


查看完整回答
反对 回复 2022-07-21
  • 1 回答
  • 0 关注
  • 78 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信