逐行读取文件stream同步

我正在查看nodejs readline模块文档,以便我必须逐行读取非常大的文件,而且看起来不错。 但是对于我的特定任务,我需要它同步读取行,即。 不pipe怎样,第5行不能在第4行之前读取,而且由于节点的性质,我只是想确认这个代码是否安全,

const readline = require('readline'); const fs = require('fs'); const rl = readline.createInterface({ input: fs.createReadStream('sample.txt') }); rl.on('line', (line) => { console.log(`Line from file: ${line}`); }); 

如果不是,我应该使用/做什么? 目前它正在为我工​​作,但我不知道它是否会工作与下一行可能比以前更快地parsing大行等。

我很怀疑这是可能的,以后发射的callback可以比另一个更早执行。 基本上,它是指事件循环和进程的堆栈。

不过,为了保证我可以build议实现类似于asynchronous/队列的东西,但是能够dynamic地推送callback。

假设你会有这样的事情:

 const Queue = require('./my-queue') const queue = new Queue() function addLineToQueue(line) { queue.push(function() { // do some job with line console.log(`Line: "${line}" was successfully processed!`) }) } 

您将修改您的代码:

 rl.on('line', (line) => { addLineToQueue(line) console.log(`Added line to queue: ${line}`) }) 

并确保您的队列实现应该启动,只要它有任何要执行的任务。 这样的callback顺序将得到保证。 但就我而言,它看起来像一个小小的开销。