为什么在读取文件行后数组为空并将其推入

时间:2018-04-10 08:10:30

标签: arrays node.js

我想知道为什么我的数组在读取这个小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); // []

这里有什么我不知道绑定的工作原理吗?

1 个答案:

答案 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');