Versuchen Sie, die Funktion asynchron zu machen, um die Aktion erst nach dem Hochladen der Daten auszuführen
P粉514001887
P粉514001887 2024-04-02 23:18:57
0
1
528

Bearbeitet, um unten eine Frage hinzuzufügen: Derzeit läuft es einwandfrei, es läuft nur nicht asynchron (ich denke, das ist der Grund, warum das asynchrone Warten versucht).

Meine Frage ist, wie ich den Übermittlungsprozess asynchron gestalten kann, sodass ich erst nach dem Hochladen der Informationen eine Aktion ausführen kann (in diesem Fall den Benutzer nach den bevorzugten nächsten Schritten fragen).

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]
    })
};

Update: Ich habe die addDoc-Funktion durch die .then-Funktion ersetzt und das scheint zu funktionieren. Das aktuelle Problem besteht darin, dass ich die Funktion „uploadImage“ nicht abschließen kann, bevor ich die Funktion „addDoc“ ausgeführt habe.

Dies ist mein Versuch, die Funktion „uploadImage“ festzuschreiben, von der ich weiß, dass sie schlampig und falsch ist:

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

P粉514001887
P粉514001887

Antworte allen(1)
P粉986937457

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

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

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage