javascript中不同输入文件之间的比较,无法到达全局变量
我试图打开不同的JSON文件,并比较彼此的值 为了做到这一点,我过去常常阅读文件。但我试图将所有数据保存在全局变量“data”中。我认为这是一个异步错误,但我对javascript非常陌生,不知道错误从何而来 这是我的密码:javascript中不同输入文件之间的比较,无法到达全局变量,javascript,asynchronous,Javascript,Asynchronous,我试图打开不同的JSON文件,并比较彼此的值 为了做到这一点,我过去常常阅读文件。但我试图将所有数据保存在全局变量“data”中。我认为这是一个异步错误,但我对javascript非常陌生,不知道错误从何而来 这是我的密码: var data = {} function readmultifiles(files) { var reader = new FileReader(); function readFile(index) { if( index >=
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控制台会向我显示对象,但我无法观看对象内部
我需要做什么来制定一个好的解决方案。我应该使用计时器来等待吗?我发现我可以这样设置计时器:setTimeout(function(){console.log(“index2”)console.log(data);console.log(data['task_1']);},500);然后我可以看到所有的数据,但我不认为这是解决这个问题的最好和更智能的解决方案。我看到我可以像这样设置一个计时器:setTimeout(function(){console.log(“index2”)console.log(data);console.log(data['task_1']);},500);然后我可以看到所有的数据,但我不认为这是最好和更聪明的解决方案。