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 可用。但是,当在浏览器内存中执行时,引擎会在输入完成被界面读取之前到达该行。
我创建了一个脚本(块 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 可用。但是,当在浏览器内存中执行时,引擎会在输入完成被界面读取之前到达该行。