繁体   English   中英

清除节点流内部缓冲区

[英]Clearing node stream internal buffer

我正在使用Node Serialport设置事件侦听器,然后检查是否通过连接流传输的数据是否具有正确的单位。 如果这些单位与用户设置的单位不匹配,我将使用.pause()方法并通知用户该设备未传输正确的单位。 然后,用户可以按下“ Resume”按钮,该按钮将调用.resume()方法。

根据Node docs的说法:“可读.pause()方法将导致处于流模式的流停止发出'数据'事件,切换为流模式。任何可用的数据将保留在内部缓冲区中。”

问题似乎是我需要清除此内部缓冲区。 就目前而言,我需要多次调用.resume()以遍历所有具有错误单位的缓冲数据。

这是代码设置的一般思路:

//Listen for data events and pipe them through a parser.
path.pipe(new Readline({ delimiter: '\r\n' })).on('data', data => {
  //do something with data
})

//Then if data units !== set units, call path.pause()
// User can press "Resume" once the device's units are changed.
<button onClick={() => path.flush(() => path.resume())}>Resume</button>

如何清除内部缓冲区,或者.pause()是否有替代方法,可以完全避免此问题而无需关闭然后重新打开连接?

听起来好像只想解开源代码:

 source.unpipe(target);

这样,所有数据都将流向无处,然后在刚刚恢复

source.pipe(target);

再次。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM