Javascript 脚本文件代码的行为与节点中的命令不同

Javascript script file code behaves differently then command in node

我创建了一个脚本(块 1),但它无法将任何内容导入我的数组。如果我获取代码并在命令行节点中逐行(块 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 环境中使用节点 v6.9.4,并在同一台计算机上执行两个块。 我在这里遗漏了一些明显的东西吗?

感谢

使用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 可用。但是,当在浏览器内存中执行时,引擎会在输入完成被界面读取之前到达该行。