javascript - 为什么 Node 的 process.stdin.on('readable') 会触发我的回调一次?
问题描述
我有以下代码:
process.stdin.on('readable', () => {
const input = process.stdin.read();
console.log(input);
});
在教程中,回调似乎在循环中触发,但是当我尝试它时,它只被调用一次,然后退出。为什么会这样?我的节点版本是13.12.0
解决方案
一旦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);
});
然后,它只会在数据到达时给您打电话。
推荐阅读
- javascript - Threejs中的对象跟随相机位置
- node.js - 我的 React/Node 应用程序在本地工作,但在 Heroku 上不工作
- jwplayer - Google DFP JW 播放器集成
- firebase - expo 和 firestore,未处理的承诺拒绝:typeError
- c++ - 检查连接状态 - Ignite 的 C++ odbc 驱动程序
- python-3.x - 将一系列矩阵相乘
- wordpress - 在生成下载文件时等待 10 秒 - 他们为什么创建以及从哪里获取这些代码?
- c# - 带有可选查询字符串的 API 正在丢失路由值
- c# - Unity无法旋转粒子系统
- javascript - 不使用 $(document).on 时,jquery touchswipe swipe 功能不起作用