So I have found this question which seems pretty similar but I do not understand the answer at all I tried to implement it but I do not recognize the patterns of the answer in my code. similar question
Now here is my problem, I have this piece of code :
var fs = require('fs');
var index = JSON.parse(fs.readFileSync('../data/7XXX7/index.json', 'utf8'));
window = {};
var indicators = require('./indicators');
var parser = new window.patient.Indicator('tes', 'test');
var i = 0;
function create_indicators() {
    var result = [];
    fs.readdirSync('../data/7XXX7/files/').forEach(file => {
        fs.readFile('../data/7XXX7/files/' + file, 'utf8', function (err, data) {
            if (err)
                throw err;
            let $ = {};
            $.poids = parser.poids(data);
            $.taille = parser.taille(data);
            $.temperature = parser.temperature(data);
            $.tension = parser.tension(data);
            $.pouls = parser.pouls(data);
            $.ps = parser.ps(data);
            $.saturation = parser.saturation(data);
            for (var j in index.files)
            {
                if (index.files[j].name === file)
                {
                    $.id = index.files[j].name;
                    $.date = index.files[j].date;
                    $.name = index.files[j].IntituleSession;
                    break;
                }
            }
            if ($.poids || $.taille || $.temperature || $.tension || $.pouls || $.ps || $.saturation)
            {
                result.push($);
                console.log(result); // print the actual state of result
//              console.log(i); prints 0 then 1 then ...
                i++;
            }
        });
        console.log(i); // prints 0
    });
    console.log(result); // prints []
    return result;
}
let result = create_indicators();
 console.log(result); // prints []
And it displays :
[]
Why does the callback function in readFile has it's own variables ? Cause it's asynchronous ? But when I use readFileSync it doesn't work too.
How to make result get all the values I put into it ? when I console log result after result.push($); it works so that's not my parser, i is also properly indented each time.
 
     
     
    