我创建了一个脚本(块1),但无法将anythign导入到我的数组中。如果我接受代码并在命令行节点中逐行执行它(块2)它可以正常工作
第1区:
var fs = require('fs');
var readline = require('readline');
var filename = process.argv[2];//filename
var content = [];
console.log(filename);
readline.createInterface({
input: fs.createReadStream(filename),
terminal: false
}).on('line', function (line) {
content.push(line);
});
console.log(content.length);
第2栏:(每行依次输入)
fs = require('fs');
readline = require('readline');
filename = "filename.txt";
content = [];
readline.createInterface({
input: fs.createReadStream(filename),
terminal: false
}).on('line', function (line) {
content.push(line);
});
content;
块1中的console.log(filename)
打印出正确的名称,但console.log(content.length)
打印“0”,其中节点REPL内容中有超过1700个条目。
我在linux环境中使用node v6.9.4,并在同一台计算机上执行这两个块。 我错过了一些明显的东西吗?
谢谢
答案 0 :(得分:1)
使用close
事件
readline.createInterface({
input: fs.createReadStream(filename),
terminal: false
}).on('line', function (line) {
content.push(line);
}).on('close', function(){
console.log(content.length);
})
当您输入节点shell时,您的文件输入流在您输入下一行所用的时间间隔内完成,因此content.length可用。但是,当在浏览器内存中执行时,引擎会在输入完成接口读取之前到达该行。