Я пытаюсь открыть разные 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 отображать
Что мне нужно сделать, чтобы сделать хорошее решение. Стоит ли использовать таймеры для ожидания?