ファイルを 1 行ずつ読み取り、コールバックを持つアクションを実行し、関数が終了したら行の読み取りを再開しようとしています。例:
var fs = require('fs');
var readline = require('readline');
var stream = require('stream');
var instream = fs.createReadStream('./phrases.txt');
var outstream = new stream;
var rl = readline.createInterface(instream, outstream);
rl.on('line', function (line) {
rl.pause();
setTimeout(function () {
console.log('resuming');
rl.resume();
}, 2000);
});
上記の例は、基本的に1行を読み、2秒待ってから次の行に進むものだと思っていましたconsole.log
。実際には、最初の2秒待ってから、大量のconsole.log
ベストアンサー1
1行ずつこのモジュールは、ファイルをメモリにバッファリングせずに、大きなテキスト ファイルを行ごとに読み取るのに役立ちます。
行を非同期に処理できます。以下は提供されている例です:
var LineByLineReader = require('line-by-line'),
lr = new LineByLineReader('big_file.txt');
lr.on('error', function (err) {
// 'err' contains error object
});
lr.on('line', function (line) {
// pause emitting of lines...
lr.pause();
// ...do your asynchronous line processing..
setTimeout(function () {
// ...and continue emitting lines.
lr.resume();
}, 100);
});
lr.on('end', function () {
// All lines are read, file is closed now.
});