【发布时间】:2021-04-27 19:48:57
【问题描述】:
在所有文件上传到 Firebase 存储后,我正尝试重定向到另一个页面。它在完成上传之前继续执行重定向代码。无法弄清楚如何一个接一个地执行。这是一个运行在网站客户端的js脚本。
if (file[0].files[0]) {
uploadFile(file[0]);
}
if (file[1].files[0]) {
uploadFile(file[1]);
}
if (file[2].files[0]) {
uploadFile(file[2]);
}
console.log("All files finished");
window.location.href = "success.html";
function uploadFile(file) {
var task = storage.ref("arts/" + emailValue + Date.now()).put(file.files[0]);
task.on('state_changed',
function progess(snapshot) {
var progressValue = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;
console.log(progressValue);
},
function error(err) {
console.log(err);
},
function completed() {
console.log('file upload success');
task.snapshot.ref.getDownloadURL().then(function(downloadURL) {
imgUrl = downloadURL;
storeDetails();
});
}
);
}
function storeDetails() {
db.collection("participants").doc(emailValue + Date.now()).set({
email: emailValue,
url: imgUrl.toString(),
})
.then(function() {
console.log("Document successfully written!");
})
.catch(function(error) {
console.error("Error writing document: ", error);
})
}
【问题讨论】:
-
您在这里没有异步等待,因此您将尝试上传并立即重定向。为什么标记 async await 我实际上并没有使用它,即使您的代码确实需要它?
-
我尝试使用 async 和 await 但对我不起作用不知道如何在我的场景中实现它。
-
我尝试更改代码不起作用(使上传功能异步并在task.on中等待)
标签: javascript firebase async-await firebase-storage