Очистка внутреннего потока потока узла - PullRequest
0 голосов
/ 09 октября 2018

Я использую Node Serialport, чтобы установить прослушиватель событий, и затем я проверяю, имеют ли данные, передаваемые по соединению, правильные единицы измерения.Если эти единицы не соответствуют установленным пользователем единицам, я использую метод .pause() и уведомляю пользователя о том, что устройство не передает правильные единицы.Затем пользователь может нажать кнопку «Возобновить», которая вызывает метод .resume().

В соответствии с документами Node: «Метод readable.pause () заставит поток в потоковом режиме прекратить излучение событий« data », выйдя из потокового режима. Любые данные, которые станут доступными, останутся ввнутренний буфер. "

Проблема в том, что мне нужно очистить этот внутренний буфер.В настоящее время мне нужно многократно вызывать .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(), которая полностью устраняет эту проблему, не закрывая и затем повторно открывая соединение?

1 Ответ

0 голосов
/ 09 октября 2018

Звучит так, как будто вы просто хотите удалить источник:

 source.unpipe(target);

таким образом, все данные перетекают в никуда, а затем возобновить когда-нибудь просто

source.pipe(target);

снова.

...