Сравнение между различными входными файлами в javascript, не может достичь глобальной переменной - PullRequest
1 голос
/ 29 апреля 2020

Я пытаюсь открыть разные JSON файлы и сравнить значения друг друга.

Для этого я использовал this для чтения файлов. Но я пытаюсь сохранить все данные в глобальной переменной data. Я думаю, что это асинхронная ошибка, но я довольно плохо знаком с javascript, и я не понял, откуда возникла ошибка.

Вот мой код:

var data = {}
function readmultifiles(files) {
    var reader = new FileReader();

    function readFile(index) {
        if( index >= files.length ) return;
        var file = files[index];
        reader.onload = function(e) {  
            // get file content  
            var bin = e.target.result;
            bin = JSON.parse(bin);
            for(task in bin['values']){
                addData(bin['info']['date'],task,bin['values'][task]);
            }
            // do sth with bin
            readFile(index+1);
        }
        reader.readAsBinaryString(file);

    }

    readFile(0);
    console.log("readmultifiles");
    console.log(data);
    return data;
}

function addData(date, task, value){
    if(data[task] == undefined){
        data[task] = {};
    }
    data[task][date] = value;
}

var fileInput = document.querySelector('#file');
fileInput.addEventListener('change', function() {
    console.log(fileInput);

    var files = fileInput.files;
    readmultifiles(files);
    console.log("index");
    console.log(data);
    console.log(data['task_1']); // I can't display this object because 'undefinned'

});

Что происходит ? Когда я пытаюсь просмотреть «данные», консоль firefox отображает мне объект, но я не могу смотреть внутри объекта.

Firefox отображать

Что мне нужно сделать, чтобы сделать хорошее решение. Стоит ли использовать таймеры для ожидания?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...