Javascript Awat不';不要等待异步

Javascript Awat不';不要等待异步,javascript,asynchronous,async-await,Javascript,Asynchronous,Async Await,我不熟悉async并等待,我有一个带有firebase的简单web应用程序,它通过输入字段获取文件,并通过单击按钮将其上载到firebase,但当我单击按钮时,它会这样做,我不会等待async函数在第一次单击时加载文件。但是当我第二次点击上传的文件时,我得到了预期的输出。我怎样才能解决这个问题? 这是我的密码 上传功能 按钮点击功能 谢谢大家,我解决了这个问题,我将在下面添加我的代码 上传功能 按钮点击功能 我遇到的问题是,当我单击按钮时,它显示一个空数组,因为文件上载需要一些时间,但当我第二次

我不熟悉async并等待,我有一个带有firebase的简单web应用程序,它通过输入字段获取文件,并通过单击按钮将其上载到firebase,但当我单击按钮时,它会这样做,我不会等待async函数在第一次单击时加载文件。但是当我第二次点击上传的文件时,我得到了预期的输出。我怎样才能解决这个问题? 这是我的密码

上传功能

按钮点击功能


谢谢大家,我解决了这个问题,我将在下面添加我的代码

上传功能

按钮点击功能

我遇到的问题是,当我单击按钮时,它显示一个空数组,因为文件上载需要一些时间,但当我第二次单击时,它显示预期的输出,因为文件已上载。所以我把等待加入了队伍

imageRef.put(testFile) ............

所以它解决了我的问题。谢谢大家的支持。

你有没有用
wait upload()或
upload()调用
upload
。然后(什么事)
?(或者可能两者都没有,这可能是问题所在。)你的问题组织得很奇怪:在标题“上载函数”下,我们看到一些代码(不是函数),在标题“按钮单击函数”下,我们看到一个名为
上载
的函数。然后有一个变量
uploadImages
,它总是被分配
undefined
,但在
upload
函数中,您将其作为函数调用。。。我无法理解这一点。
上传图像
似乎不是/返回承诺。请看一看。我遇到的问题是,等待函数在文件上载之前执行,并返回一个未定义的值。您没有等待此链:
imageRef.put(file)
-因为您有异步等待-删除
。然后
链。
async function upload(){
        await uploadImages().then((data) => {
            if (data != 1) {
                paragraphData = paragraphData.map(
                    function (x, i) {
                        return {
                            Title: x.Title,
                            Paragraph: x.Paragraph,
                            Image: data[i],
                        };
                    }.bind(this)
                );
                console.log(paragraphData);

                //dispatch("paragraphData",{data})
            } else {
                console.log("d");
            }
        });
}
    async function uploadImages() {
        var storageRef = firebase.storage().ref();
        for (const file of document.getElementsByName("fupload")) {
            // let test = (file as HTMLInputElement).files[0].name;
            // console.log(test);
            var imageRef = storageRef.child(
                "projects/" + projectName + "/" + (file as HTMLInputElement).files[0].name
            );
            let test = (file as HTMLInputElement).files[0].name;
            let testFile = (file as HTMLInputElement).files[0];
            await imageRef.put(testFile).then((snapshot) => {
                snapshot.ref.getDownloadURL().then(function (downloadURL) {
                    paragraphUrl.push(downloadURL);
                });
            });
        }
        return paragraphUrl;
}
    async function submitParagraphData() {
        paragraphTitles = [];
        paragraphs = [];
        var e = document.getElementsByName("ParagrphTitle").forEach((element) => {
            paragraphTitles.push((element as HTMLInputElement).value);
        });
        var f = document.getElementsByName("Paragraph").forEach((element) => {
            paragraphs.push((element as HTMLInputElement).value);
        });

        let paragraphData = paragraphTitles.map(
            function (x, i) {
                return { Title: x, Paragraph: paragraphs[i] };
            }.bind(this)
        );

        await uploadImages().then((data) => {
            console.log(data);
        });
    }
imageRef.put(testFile) ............