編輯以在底部新增問題: 目前,它可以正常運行,只是它不是非同步運行(我認為這是非同步等待嘗試的原因)。
我的問題是如何使提交流程異步,以便我可以僅在上傳資訊後執行操作(在本例中提示使用者首選的後續步驟)。
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"); }
只有當您的
uploadImage()
和addDoc()
函數傳回 JavaScript 承諾。請參閱來自nodejs.dev的這篇文章有關 async/await 的更多資訊。