搜尋

首頁  >  問答  >  主體

嘗試使函數異步以僅在上傳資料後執行操作

編輯以在底部新增問題: 目前,它可以正常運行,只是它不是非同步運行(我認為這是非同步等待嘗試的原因)。

我的問題是如何使提交流程異步,以便我可以僅在上傳資訊後執行操作(在本例中提示使用者首選的後續步驟)。

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粉514001887239 天前500

全部回覆(1)我來回復

  • P粉986937457

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

    只有當您的 uploadImage()addDoc() 函數傳回 JavaScript 承諾

    請參閱來自nodejs.dev的這篇文章有關 async/await 的更多資訊。

    回覆
    0
  • 取消回覆