Вместо этого вы можете использовать onload
событие с параметром.
var FilesObj=[];
function GetFiles(){
var fileControls = $('input[type="file"]');
for (var a = 0; a < fileControls.length; a++) {
var files = fileControls[a].files;
if (files.length > 0) {
var file = fileControls[a].files[0];
var reader = new FileReader();
var Obj1 = new Object();
// $(e.target).attr('id')
reader.readAsDataURL(file);
reader.onload = (function(f,id) {
return function(e) {
// Here you can use `e.target.result` or `this.result`
// `f.id`and `f.name`.
Obj1.Key = id;
var valRes = this.result;
Obj1.Value = valRes;
FilesObj.push(Obj1);
};
})(file,fileControls[a].id);
}
}
}
function ViewFiles (){
$.each(FilesObj,function(i,obj){
var $img = $("<img>").prop("id","img"+obj.Key).attr("src",obj.Value).prop("width","100").prop("height","100");
$("#divImages").append($img);
});
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<input type="file" id="file1">
<input type="file" id="file2">
<input type="file" id="file3">
<input type="file" id="file4">
<input type="file" id="file5">
<br>
<br>
<br>
<button type="button" onclick="GetFiles()">Get Files</button>
<button type="button" onclick="ViewFiles()">View Files</button>
<br>
<br>
<div id="divImages"></div>