Обещание Javascript не возвращается с помощью async / await

Я создал библиотеку 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;
MDN говоритonloadend полностью строчный. Может в этом проблема?
JJWesterkamp 05.06.2018 17:47

@JeffreyWesterkamp да, это сработало странно, потому что я не получал никаких ошибок для этого.

Kay 05.06.2018 17:48
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
76
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Другие вопросы по теме