Вы можете дополнить свой код, чтобы отслеживать количество загруженных файлов.Таким образом, когда последний файл был загружен, вы можете вызвать конечный обработчик завершения:
this.setCanvas = function(files) {
var numItems = files.length - 1;
var itemsLoaded = 0; // Initialize to zero
var items = [];
var i = 0;
for(i=0;i<=numItems;i++) {
var file = files[i];
var reader = new FileReader();
reader.onload = (function(i) {
return function(e) {
var something = that.whatever();
items[i] = something;
if(++itemsLoaded == numItems) {
// At this point all files will have been loaded.
allLoaded();
}
};
})(i);
reader.readAsDataURL(file);
}
function allLoaded() {
// Now we can analyze the results
console.log(items);
}
}
Я также изменил items
на Array
вместо Object
.
Также, если вы хотите быть немного умнее, вы можете уменьшить numItems
и проверить на ноль вместо создания новой переменной itemsLoaded
.