Я использую p-fileUpload в приложении Angular 6.0.0 для загрузки файлов изображений (в данном случае нескольких файлов изображений). Он имеет обработчик событий (uploadHandler) для файлов загружено.
<p-fileUpload multiple = "true" name = "myfile[]" accept = "image/*" [auto] = "true"
customUpload = "true" chooseLabel = "Select" (uploadHandler) = "uploadImage($event)">
</p-fileUpload>
Файлы загружаются правильно, но я не могу сгенерировать код base64 при циклическом обходе массива e.files, потому что reader.onloadend не запускается. Я искал эту проблему со стрельбой и нашел несколько связанных вопросов, но их решение не решает мою проблему. Ниже приведен код, который я написал для загрузки нескольких файлов изображений -
uploadImage(e: any) {
if (e && e.files.length) {
const reader: FileReader = new FileReader();
e.files.forEach((i: File, j: any) => {
reader.onloadend = (ev: any) => {
console.info('inside??');
// Console is not triggered
};
// reader.readAsDataURL(...);
this.cdr.markForCheck(); // For outside zone detection
});
}
}
Пожалуйста, помогите мне с этой проблемой.
Я использую этот же код для загрузки одного изображения (поэтому мне не нужен там цикл forEach) внутри того же приложения, и он работает во всех других местах, в отличие от этого случая.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Событие onloadend не может сработать, если соответствующий вызов .readAsDataURL не работает.