Nodejs数组未按预期工作

时间:2016-01-21 04:20:24

标签: javascript arrays node.js

我试图从文本文件读入并将它们存储在我的Lease类的数组中。如果我从最终循环内部调用console.log(),它将在每个iterration的当前状态下打印循环。但是如果我在循环外部移动console.log,它会打印一个空数组。

按预期工作

const readline = require('readline'),
  fs = require('fs');

function Lease(renter, unit) {
  this.unit = unit;
  this.renter = renter;
}

var list = [];

var rl = readline.createInterface({
  input: fs.createReadStream('input.txt'),
  output: process.stdout,
  terminal: false
});

rl.on('line', function(line) {
  var values = line.split(' - ');
  list.push(new Lease(values[0], values[1]));
  console.log(list);
});

打印空数组

const readline = require('readline'),
  fs = require('fs');

function Lease(renter, unit) {
  this.unit = unit;
  this.renter = renter;
}

var list = [];

var rl = readline.createInterface({
  input: fs.createReadStream('input.txt'),
  output: process.stdout,
  terminal: false
});

rl.on('line', function(line) {
  var values = line.split(' - ');
  list.push(new Lease(values[0], values[1]));
});

console.log(list);

1 个答案:

答案 0 :(得分:2)

在第一个版本中,console.log()位于回调函数中,它将在调用回调函数时执行。

但是,在第二个版本中,console.log()将在执行on.('line'的回调函数之前调用...

回调函数是 Async ,它不会被执行,直到当前堆栈为空...