簡體   English   中英

Node.js Readline接口'pause'事件不會暫停輸入流

[英]Node.js Readline Interface 'pause' event does not pause input stream

我希望下面的代碼創建一個Readline接口,其中包含一個包含~1000個URL列表的文件的可讀流,從輸入流開始流式傳輸(將一行記錄到控制台),然后暫停:

var readline = require('readline');
var fs = require('fs');

var rlinterface = readline.createInterface({
    input: fs.createReadStream('urls.txt'),
    output: null,
    terminal: false
});

rlinterface.on('pause', function() {
    console.log('Readline paused.');
});

rlinterface.on('line', function(line){
    console.log(line);
    rlinterface.pause();
}); 

pause事件的監聽器通知我應該暫停流,但是輸入流中文件中的所有行都會記錄到控制台,這表明流不會暫停。 即使流不在第一行之后立即暫停(可能需要在緩沖區中捕獲一些額外的行),我也不希望來自輸入流的文件中的所有行都在流之前流式傳輸暫停'。 發生什么了?

可能發生的事情是整個文件被一次性讀入,當你pause() ,沒有什么可讀的。 具體來說,默認highWaterMarkfs.ReadStream64KB ,所以可讀流可以輕松地使用你的整個17KB文件,第一讀,因為它試圖完全保持內部緩存高達highWaterMark

暫無
暫無

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

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