【问题标题】:How do I load lines from a file at an interval in NodeJS without loading the whole file into memory?如何在 NodeJS 中每隔一段时间从文件中加载行而不将整个文件加载到内存中?
【发布时间】:2016-01-09 09:10:59
【问题描述】:

我在 Node 方面不是很有经验,但我想一次加载一个文件并处理它,但有两个特殊限制:

  • 我不想将整个文件加载到内存中(它可能很大)
  • 我想处理每行大约相隔一秒钟。理想情况下,在 100 毫秒到 2000 毫秒之间的随机间隔

或者另一种看待问题的方式:我想将文件视为数据的测试流。

到目前为止,我发现的所有内容似乎都涉及一次将整个内容加载到一个数组中,或者逐行加载它,但几乎是立即完成的。

【问题讨论】:

    标签: node.js file-io setinterval


    【解决方案1】:

    嗯,刚找到这个。不知道是否有更好的方法可以做到这一点,但使用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));
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-13
      • 1970-01-01
      • 2014-10-22
      • 1970-01-01
      • 2019-03-25
      • 1970-01-01
      • 1970-01-01
      • 2017-06-16
      相关资源
      最近更新 更多