Essayez de rendre la fonction asynchrone pour effectuer l'action uniquement après avoir téléchargé les données
P粉514001887
P粉514001887 2024-04-02 23:18:57
0
1
488

Modifié pour ajouter une question en bas : Actuellement, cela fonctionne bien, c'est juste qu'il ne fonctionne pas de manière asynchrone (je pense que c'est pourquoi l'attente asynchrone essaie).

Ma question est de savoir comment rendre le processus de soumission asynchrone afin que je ne puisse effectuer une action qu'après avoir téléchargé les informations (dans ce cas, en invitant l'utilisateur à choisir les prochaines étapes préférées).

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

Mise à jour : j'ai modifié la fonction addDoc avec la fonction .then et cela semble fonctionner. Le problème actuel est que je ne peux pas terminer la fonction uploadImage avant d'exécuter la fonction addDoc.

C'est ma tentative de valider la fonction uploadImage, dont je sais qu'elle est bâclée et erronée :

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

P粉514001887
P粉514001887

répondre à tous(1)
P粉986937457

Seulement si votre fonction uploadImage()addDoc() renvoie une Promesse JavaScript.

Voir cet articlede nodejs.dev pour plus d'informations sur async/await.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal