Я создал библиотеку umd для браузера с помощью webpack.
Я слушаю событие onchange входного файла. Когда кто-то отправляет изображение / файл, он преобразует его в base64. Я пытаюсь сделать это как можно менее кажущимся, поэтому я использую обещания и await / async от https://blog.shovonhasan.com/using-promises-with-filereader/.
Однако есть проблема: когда я вызываю функцию convertToBase64, ответа не поступает. Обещание не возвращает отказ или решение. Ошибок не возникает, и строка с console.info (data) не попадает.
html
<input id = "hs-pay" type = "file" accept = "image/*" capture = "camera">
<script type = "text/javascript">
let hsp = new HSPay();
</script>
index.js
var HSFileReader = require('./helper/fileReader');
class HSPay {
constructor() {
this.fileReader = new HSFileReader();
this.imageInput = document.getElementById('hs-pay');
if (!this.imageInput) {
throw "Error(input): hs-pay could not be found:"
}
this.imageInput.addEventListener("change", this.uploadImage.bind(this));
}
async uploadImage() {
try {
let data = await this.fileReader.convertToBase64(this.imageInput.files[0]);
console.info("data", data);
} catch (e) {
console.info(e);
}
}
}
module.exports = HSPay;
filereader.js
class HSFileReader {
constructor() {
this.fileReader = new FileReader();
}
convertToBase64(file) {
if (!file) {
throw "Error(input): file could not be found:"
}
return new Promise((resolve, reject) => {
this.fileReader.readAsDataURL(file);
this.fileReader.onerror = () => {
reject("Problem parsing input file.");
};
this.fileReader.onloadEnd = () => {
resolve(this.fileReader.result);
};
});
}
}
module.exports = HSFileReader;
@JeffreyWesterkamp да, это сработало странно, потому что я не получал никаких ошибок для этого.



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


По данным MDN, onloadend - это метод FileReader. onloadEnd (верхний регистр E) никогда не будет вызван, и, следовательно, resolve никогда не будет вызван.
onloadendполностью строчный. Может в этом проблема?