[英]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()
,沒有什么可讀的。 具體來說,默認highWaterMark
為fs.ReadStream
是64KB ,所以可讀流可以輕松地使用你的整個17KB文件,第一讀,因為它試圖完全保持內部緩存高達highWaterMark
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.