首先,每次你調用這個函數,你都會做require('readline')
和require('fs')
,所以我會把它移到腳本上。
我建議兩種方法:
暫停閱讀
var readline = require('readline');
var fs = require('fs');
function clickTest(){
var lineReader = readline.createInterface({
input: fs.createReadStream(filePath)
});
lineReader.on('line', function(line){
// pause emitting of lines...
lineReader.pause();
// write line to dom
document.getElementById("demo").innerHTML += line;
// Resume after some time
setTimeout(function(){
lineReader.resume();
}, 1000);
});
lineReader.on('end', function(){
lineReader.close();
});
}
這種做法應該讀一行,然後暫停一些時間,你指定後恢復。
緩衝線
var readline = require('readline');
var fs = require('fs');
var lines = [];
function clickTest(){
var lineReader = readline.createInterface({
input: fs.createReadStream(filePath)
});
lineReader.on('line', function(line){
lines.push(line)
});
lineReader.on('end', function(){
lineReader.close();
printLine(0);
});
}
function printLine(index){
// write line to dom
document.getElementById("demo").innerHTML += lines[index];
if (index < lines.length - 1){
setTimeout(function(){
printLine(index + 1);
}, 1000);
}
}
這種方法將節省所有行到一個數組,然後慢慢地打印出來。
請注意,我還沒有得到節點WebKit的實際測試,所以你可能會發現代碼中的錯誤,但它應該給你的總體思路
來源
2017-04-06 06:56:21
Tom
您在這裏混合服務器和客戶端操作。您不能在客戶端上使用fs模塊從文件中讀取數據,並且在節點上您可以讀取整個文件,然後將其發送到客戶端。所以你可能需要的是讀取整個文件並將其發送到客戶端,然後設置間隔,或者將套接字向下打開到客戶端並在讀取時保持發送從節點到服務器的線路 – Tom
@Tom其實我已經使用fs模塊從文件中讀取(爲什麼不能?)。我的問題是如何顯示HTML頁面中的內容。 – Patrick
你清楚地瞭解客戶端和服務器之間的區別嗎?只要我知道你不能在客戶端讀取本地文件(除非你明確地在文件輸入中選擇它們) – Tom