首页  >  问答  >  正文

尝试使函数异步以仅在上传数据后执行操作

编辑以在底部添加问题: 目前,它可以正常运行,只是它不是异步运行(我认为这是异步等待尝试的原因)。

我的问题是如何使提交流程异步,以便我可以仅在上传信息后执行操作(在本例中提示用户首选的后续步骤)。

const handleSubmit = async () => {
  
  try {
    if (image.value) {
      await uploadImage(image.value); <--I thought this was 
        asynchronous, but I tested and I don't think it is. 
    }

    const colRef = collection(db, "collection");

    //I thought the below was asynchronous, but it's not
    await addDoc(colRef, 
       {
      data: data.value <--placeholder
     
    });
    
      });
  } catch {

  }

  //code to run after addDoc is done, but it runs immediately
  $q.dialog({
      [content]
    })
};

更新:我已经用 .then 函数更改了 addDoc 函数,这似乎有效。当前的问题是,我无法在运行 addDoc 函数之前完成 uploadImage 函数。

这是我尝试承诺 uploadImage 函数,我知道这是草率且错误的:

if (image.value) {
          return new Promise((resolve, reject) => {
            const newImage = uploadImage(image.value);
            resolve(newImage);
          });
        } else {
          console.log("error");
        }

P粉514001887P粉514001887171 天前359

全部回复(1)我来回复

  • P粉986937457

    P粉9869374572024-04-03 18:44:04

    只有当您的 uploadImage()addDoc() 函数返回 JavaScript 承诺

    请参阅来自nodejs.dev的这篇文章有关 async/await 的更多信息。

    回复
    0
  • 取消回复