При попытке вывести любой элемент массива получаю undefined, однако если вывести весь массив через console.log, то он выводится.
showFiles = function(files) {
let resultArray = [];
for (let i = 0; i < files.length; i++) {
(function(file) {
let fr = new FileReader();
fr.onload = function(e) {
let image = new Image();
image.src = e.target.result;
image.onload = function() {
resultArray.push({
'src' : e.target.result,
'width' : this.width,
'height' : this.height,
'size' : file.size
});
}
};
fr.readAsDataURL(file);
})(files[i]);
}
console.log(resultArray[0]);
};
Вариант с использованием промисов и async\await.
async function showFiles(files) {
let resultArray = [];
for (let i = 0; i < files.length; i++) {
const file = files[i];
let fr = new FileReader();
const onload = new Promise((resolve, reject) => {
fr.onload = function(e) {
let image = new Image();
image.src = e.target.result;
image.onload = function() {
resultArray.push({
'src': e.target.result,
'width': this.width,
'height': this.height,
'size': file.size
});
resolve();
}
image.onerror = reject;
};
fr.onerror = reject;
});
fr.readAsDataURL(file);
await onload;
}
return resultArray;
};
async function fileChange() {
const res = await showFiles(inputFile.files);
console.log(res);
};
<input id="inputFile" type="file" multiple="true" onchange="fileChange()">
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Нужно создать двусвязный список и проделать с ним некоторые действия - a) Добавить новый элемент в начало, b) Убрать первый элемент, c) Добавить...
У меня есть код, с двумя вариантами, первый который работает с оператором afirst и второй который работает с оператором a->first для меня разницы...
Пытаюсь использовать коннектер MySQL и C++ среда : Windows 10 Code::Blocks 1712 MySQL 8