Как я могу ждать uploadTask, чтобы я мог загрузить изображение / файл и отследить его ход, прежде чем вставлять загруженный документ url dan в firestore,
Следующий код - мой пример проекта Vue. Он работает должным образом, но посмотрите на if (portraitFile)
, он должен быть в условии, что я должен загрузить изображение, что если я не хочу загружать изображение?
Он должен выйти за пределы этого условного if
, но он будет выполняться асинхронно до завершения файла и получения URL загрузки.
ЦЕЛЬ: Переместить firestore add () за пределы завершающего обратного вызова / аргумента uploadTask.
async commitCharacter() {
try {
let character = this.character;
let portraitFile = this.portraitFile;
if (portraitFile) {
const uploadTask = storageRef
.child(`characters/${character.id}/portrait.png`)
.put(portraitFile, { contentType: "image/png" });
await uploadTask.on(
"state_changed",
snapshot => {
this.portraitUploadProgress =
(snapshot.bytesTransferred / snapshot.totalBytes) * 100;
},
null,
async () => {
character.portraitUrl = await storageRef
.child(`characters/${character.id}/portrait.png`)
.getDownloadURL();
if (character.id) {
await db
.collection("characters")
.doc(character.id)
.update(character);
} else {
character.id = (await
db.collection("characters").add(character)).id;
}
$("#manageCharacter").modal("hide");
}
);
}
}