[英]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.