2015-10-12 2 views
0

Я не очень опытный в узле, но я хотел бы, чтобы загрузить файл на одну строку времени и обработать его с двумя специальными ограничениями:Как загрузить строки из файла с интервалом в NodeJS без загрузки всего файла в память?

  • Я не хочу, чтобы загрузить весь файл в памяти (это может быть огромным)
  • Я хочу обрабатывать каждую строку примерно на секунду. В идеале, в случайном интервале между 100 мс и 2000 мс

Или еще один способ взглянуть на проблему: я хочу рассматривать файл как тестовый поток данных.

Все, что я нашел до сих пор, похоже, связано либо с загрузкой всего предмета в массив сразу, либо по загрузке его по строкам, но при этом почти мгновенно.

ответ

0

Хм, только что нашел это. Dunno, если есть лучший способ сделать это, но, похоже, это довольно просто, используя line-by-line:

var Random = require('random-js')(); 
var LineByLineReader = require('line-by-line'), lr = new LineByLineReader(filename); 

lr.on('line', function (line) { 
    lr.pause(); // this blocks so the next line won't read right away. 

    sendToStream(line); 
    setTimeout(function() { 
     lr.resume(); // resume after random interval 
    }, Random.integer(100, 2000)); 
}); 
Смежные вопросы