我想知道为什么我的数组在读取这个小node
脚本中的文件行后为空:
const readline = require('readline');
const fs = require('fs');
var arr = [];
const rl = readline.createInterface({
input: fs.createReadStream('file.txt')
});
rl.on('line', (line) => {
arr.push(line);
});
console.log(arr); // []
这里有什么我不知道绑定的工作原理吗?
答案 0 :(得分:1)
Readline是异步的,所以' line'多次调用,而所有console.log(arr);
调用完成之前,系统会调用您当前的rl.on('line', (line) =>
。
您需要使用'关闭'事件
调用rl.close()方法,readline.Interface实例放弃了对输入和输出流的控制;
所以将代码更改为:
const readline = require('readline');
const fs = require('fs');
var arr = [];
const rl = readline.createInterface({
input: fs.createReadStream('file.txt')
});
rl.on('close', (line) => {
console.log(arr);
//and anything else you want to do once finished processing
});
// this will fire before 'close'
console.log('This fired before rl had finished');