首先,每次你调用这个函数,你都会做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的实际测试,所以你可能会发现代码中的错误,但它应该给你的总体思路