На самом деле хорошо ли выполнять другую наблюдаемую с собственной подпиской внутри оператора finalize()
? Я знаю, что помещать это внутрь subscribe()
не очень хорошая практика, которая приводит к утечке памяти, и т.д. c. В настоящее время я работаю с Firebase Storage API и пытаюсь загрузить изображение в базу данных, и возникает проблема, когда вы не можете получить правильный статус загрузки. Итак, я пытаюсь понять, когда я могу получить URL изображения из базы данных, когда в ответ количество переданных байтов равно общему количеству байтов. Но Firebase отвечает на это, что мое изображение еще не существует на сервере.
Так что я должен получить URL изображения в операторе finalize()
. Это действительно хорошая идея?
Кроме того, можно сделать это с помощью debounceTime()
, но я хочу, чтобы код был более четким и синхронным.
Кроме того, искал различные решения и нашел некоторые статьи, где авторы сделали то же самое
this.storage.upload(filePath, this.selectedImage).snapshotChanges()
.pipe(
rxFilter(res => res.bytesTransferred === res.totalBytes),
switchMap(res => this.storage.ref(filePath).getDownloadURL())
)
.subscribe(url => {
console.log(url);
});