Я пытаюсь использовать filereader для чтения данных из нескольких файлов в массиве. Но есть ошибка, говорящая, что объект уже занят чтением Blobs.FileReader JS throws Объект занят чтением blobs
flag = 1;
var file;
var fileRead = [];
for (var i = 0, f; f = changeEvent.target.files[i]; i++) {
reader.onload = function(loadEvent) {
scope.$apply(function() {
if (flag == 1) {
fileRead.push(loadEvent.target.result);
}
});
};
reader.readAsDataURL(f);
}
for (i = 0; i < changeEvent.target.files.length; i++) {
file = changeEvent.target.files[i];
fileName.push(file.name);
}
}
}
Я попытался использовать цикл, чтобы убедиться, что эта операция выполнена, но она заканчивается бесконечным циклом.
должен быть '' reader.onloadend вместо 'reader.onload' – juvian
пытался это тоже. это не имеет никакого значения. –
Вы вызываете 'reader.readAsDataURL (f);' прежде чем он сможет закончить предыдущий файл. 'readAsDataURL' ** является асинхронным **. Почему, по-вашему, вы должны предоставить обработчик события 'load'? Вы в основном говорите «читателю» для чтения файлов «n» сразу. –