Смущает метод readline для метода () Node.js
Я смущен некоторым простым поведением, которое я вижу изreadline on()
метод.
У меня есть файл с именемsmall.csv
который выглядит так:
Date,Close
2015-11-12,2045.97
2015-11-11,2075.00
2015-11-10,2081.72
2015-11-09,2078.58
Я написал этот скрипт:
my.js
var rl = require('readline').createInterface({
input: require('fs').createReadStream('small.csv')
});
global.myarray = [];
rl.on('line', function (line) {
console.log('Line from file:', line);
global.myarray.push(line);
});
console.log(global.myarray);
// done
Выход скрипта:
dan@nia111:~/d1d2p $
dan@nia111:~/d1d2p $ node -v
v5.0.0
dan@nia111:~/d1d2p $
dan@nia111:~/d1d2p $
dan@nia111:~/d1d2p $ node my.js
[]
Line from file: Date,Close
Line from file: 2015-11-12,2045.97
Line from file: 2015-11-11,2075.00
Line from file: 2015-11-10,2081.72
Line from file: 2015-11-09,2078.58
dan@nia111:~/d1d2p $
dan@nia111:~/d1d2p $
Я хочу улучшить сценарий, чтобы он заполнялglobal.myarray
а не оставлять его пустым.
Когда я прохожу сценарий сnode-debug
, похоже, чтоglobal.myarray
наполняет, но я думаю, что это иллюзия.
Также, когда я бегуnode my.js
похоже, чтоconsole.log(global.myarray);
бежит раньшеsmall.csv
читается
Поэтому мне, наверное, нужно понять какой-то асинхронный механизм на работе здесь.
Следующий вопрос может быть легким для тех, кто понимаетreadline
Что ж.
Но я был бы рад получить ответ на этот вопрос:
Как улучшитьmy.js
так оно заполняетglobal.myarray
а не оставить его пустым?