I have the following Nodejs code. My intention is to produce a single count of of all lines in all the files. However, when I run this code, I just receive a count of the smallest file.
I think I understand why. All the 6 files reads get launched in quick succession and naturally, the shortest files finishes first, and doesn't wait for all the other tallies to complete.
My question is: What's the best Nodejs approach to this problem? In real life, I want to do a more complex operation than incrementing the counter each time, but this gets across the idea.
Should I use promises somehow to do this, or perhaps key off of some other kind of event?
var fs = require("fs");
var readline = require('readline');
var TOTAL_LINES = 0;
allCSVFiles = ["a", "b", "c", "d", "e", "f"];
allCSVFiles.forEach(function(file, idx, array){             
    var pathToFile = `/scratch/testDir/${file}.csv`;
    var rd = readline.createInterface({
    input: fs.createReadStream(pathToFile),
    // output: process.stdout,
    console: false
    });
    rd.on('line', function(line) {
    TOTAL_LINES++;
    })
    .on('close', function() {
        console.log (`closing: ${pathToFile}`);
        if (idx === array.length - 1){ 
        console.log (`Grand total: ${TOTAL_LINES}`);
        }
    })
});
 
    