#arrays #node.js #push #eventemitter
#массивы #node.js #толкать #eventemitter
Вопрос:
Используя readLine для чтения из файла, у меня есть:
fs = require 'fs'
readline = require 'readline'
stream = require 'stream'
instream = fs.createReadStream './test.txt'
outstream = new stream
outstream.readable = true
outstream.writable = true
rl = readline.createInterface({input: instream, output: outstream, terminal: false})
arr = []
rl.on 'line', (line) ->
arr.push line
console.log arr
Я пытаюсь перенести каждую строку в массив, но обратный вызов в rl.on
, похоже, не завершает push()
метод, но если я заменю push
на console.log
, он напечатает каждую строку файла. Я понимаю, что, вероятно, есть гораздо лучшие способы достижения того же результата, но этот эксперимент провалился, и я не понимаю почему.
Почему .on
обратный вызов не может передать строку в массив?
Комментарии:
1. Проблема не в том, что данные не помещаются в массив, а в том, что вы регистрируете массив перед отправкой данных. Обратный вызов является асинхронным и
console.log
синхронным.2. Вы имеете в виду, что
console.log
вызывается перед считыванием данных из файла?3. Действительно. Если вы хотите записать массив после чтения файла, поместите
console.log
внутрьclose
обработчика событий для интерфейса readline.