I’m new to Javascript and I’m not understanding how to persist data in an array. In my function I’m reading a file line by line and saving it in an array. I figured that because the array is declared outside the function that data would remain in it, but that’s not what happens. I would like to understand how to do when printing the values of the array outside the function that data still remain.
My code:
const fs = require('fs'); const readline = require('readline'); var array = []; async function processLineByLine() { const fileStream = fs.createReadStream('data.txt'); const rl = readline.createInterface({ input: fileStream, crlfDelay: Infinity, }); for await (const line of rl) { array.push(line); } //console.log(array.toString()); } processLineByLine(); console.log(array.toString());
The expected output would be to have the data inside the array:
288355555123888,335333555584333,223343555124001,002111555874555,111188555654777,111333555123333
Advertisement
Answer
You wont get since it’s async call. try below snippet
const fs = require('fs'); const readline = require('readline'); var array = []; async function processLineByLine() { const fileStream = fs.createReadStream('data.txt'); const rl = readline.createInterface({ input: fileStream, crlfDelay: Infinity, }); for await (const line of rl) { array.push(line); } } processLineByLine().then(()=>{ console.log(array); });
if each line of data.txt is like 288355555123888, 335333555584333, 223343555124001,… and want to extract those numbers spit each line and then add it to array.
for await (const line of rl) { array=[...array, ...line.split(',')]; }