Editado para agregar una pregunta en la parte inferior: esto actualmente funciona correctamente, excepto que no se ejecuta de forma asíncrona (que pensé que era por lo tanto, los intentos de espera asíncrona).
Mi pregunta es cómo hacer que un flujo de envío sea asincrónico para que pueda realizar una acción (en este caso, solicitar al usuario los siguientes pasos preferidos) solo después de cargar la información.
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] }) };ACTUALIZACIÓN: He cambiado la función addDoc con una función .then, y eso parece funcionar. El problema actual es que no puedo completar la función uploadImage antes de ejecutar la función addDoc.
Aquí está mi intento de prometer la función uploadImage, y sé que es descuidado e incorrecto:
if (image.value) { return new Promise((resolve, reject) => { const newImage = uploadImage(image.value); resolve(newImage); }); } else { console.log("error"); }El método async/await que intenta usar solo funcionará según lo previsto si sus uploadImage() y addDoc() devuelven JavaScript Promises .
Consulte este artículo de nodejs.dev en async/await para obtener más información.