簡體   English   中英

NodeJ設置readline模塊速度

[英]NodeJs set readline module speed

我使用readline模塊在NodeJs中讀取文本文件。

var lineReader = require('readline').createInterface({
  input: require('fs').createReadStream('log.txt')
});
lineReader.on('line', function (line) {
  console.log(line);
});
lineReader.on('close', function() {
  console.log('Finished!');
});

有什么方法可以設置閱讀時間? 例如,我想每5毫秒讀取每一行。

您可以在閱讀一行后立即暫停閱讀器流。 然后在5毫秒后恢復。 重復此操作,直到文件末尾。 確保將highWaterMark選項調整為較低的值,以便文件讀取器流不會一次讀取多行。

var lineReader = require('readline').createInterface({
  input: require('fs').createReadStream('./log.txt',{
    highWaterMark : 10
  })
});

lineReader.on('line', line => {
  lineReader.pause(); // pause reader
  // Resume 5ms later
  setTimeout(()=>{
    lineReader.resume();
  }, 5)
  console.log(line);
});

您可以使用可觀察對象來執行此操作。 這是我認為您希望使用單擊事件而不是文件行事件進行緩沖的一種示例。 不知道是否有一種更干凈的方法可以避免setInterval...。

let i = 0;
const source = Rx.Observable
  .fromEvent(document.querySelector('#container'), 'click')
  .controlled();

var subscription =
  source.subscribe(() => console.log('was clicked ' + i++));

setInterval(() => source.request(1), 500);

這是一個小提琴,也是rx的文檔鏈接:

https://jsfiddle.net/w6ewg175/

https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/control.md

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM