当前位置: 首页 > 知识库问答 >
问题:

Javascriptpromise不返回异步/等待

姜锋
2023-03-14

我用webpack建立了一个浏览器umd库。

我正在侦听输入文件的onchange事件。当有人提交图像/文件时,它会将其转换为base64。我试图让它尽可能看起来不那么明显,所以我使用了promises和wait/asynchttps://blog.shovonhasan.com/using-promises-with-filereader/.

但是,有一个问题-当我调用convertToBase64函数时,没有收到响应。promise不返回拒绝或决议。没有抛出任何错误,并且该行与控制台连接。未命中日志(数据)。

html

<input id="hs-pay" type="file" accept="image/*" capture="camera">
<script type="text/javascript">
    let hsp = new HSPay();
</script>

指数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.log("data", data);
        } catch (e) {
            console.log(e);
        }

    }
}

module.exports = HSPay;

文件阅读器。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;

共有1个答案

江渊
2023-03-14

根据MDN,onloadendFileReader的一种方法onloadEnd(大写E)永远不会被调用,因此,resolve永远不会被调用。

 类似资料:
  • 问题内容: 我读到用关键字标记的异步函数隐式返回一个promise: 但这不连贯…假设返回一个诺言,而await关键字将从诺言中返回值,而不是诺言itsef,那么我的getVal函数 应该 返回该值,而不是隐式诺言。 那到底是什么情况?用async关键字标记的函数是隐式返回promise还是控制它们返回的内容? 也许,如果我们不明确地返回某些东西,那么他们会隐式地返回一个诺言…? 更清楚地说,上述

  • 我用的是parse.com。每个包里面都有很多钻子,每个品类里面都有很多包。 我卡住了。然后(函数(result,result2,result3)在最后一行。promise可以有多个promise,它是可变的。有没有一种方法可以写出如下内容: 谢谢!

  • 我有一个windows服务,我从另一个开发人员继承,它运行非常慢,并有许多对eBay API的缓慢调用。我希望在没有太多重构的情况下加快它。 我刚刚开始研究使用C#Async/Await来尝试让这些缓慢的调用运行异步。以下是我试图实现的目标: 如何获取返回的类型以便使用它们?我尝试使用,但它只有属性可用。

  • 我一直在使用ECMAScript 很明显第一步是ECMAScript 下面是我如何实现基本promise的示例/伪代码- 随着时间的推移,我遇到了ECMAScript 同样,这里有一个伪代码,描述了我的异步等待函数的样子- 把语法错误(如果有的话)放在一边,我觉得它们做的事情完全一样。我几乎可以用async、Waities取代我的大部分promise。 当promise做类似的工作时,为什么需要异

  • 我想返回用户的电话号码,但我得到的是[对象对象]。我在想,如果它在等待完成之前返回值。这是我的代码。 输出12345678,以便我可以在异步函数外部访问它。例如,要在个人资料页面中显示它,

  • 我正试图将图像上传到firebase存储,但调用该函数时,未执行wait以获取url。我错过了什么? 看看这个其他主题,我发现问题可能是“然后”,但我如何设置代码以等待url? 异步/等待/然后飞镖/颤振 谢谢