Я создаю угловое приложение, используя rxjs и firestore.
Функция, над которой я работаю, должна обновлять процент проекта.
Поскольку это ресурсоемкий процесс, я обновляю только процент видимых проектов.
Процент рассчитывается с использованием даты начала, даты окончания и текущей даты. Так что, если мы находимся на полпути к проекту, процент будет указывать 50%.
Теперь я подписываюсь на проект и использую формулу, чтобы рассчитать процент и отправить его в базу данных. Дело в том, что мне нужно пересчитывать этот процент каждые 1 с (или любое количество раз, мне просто нужно, чтобы он был точным), чтобы я мог соответствующим образом обновить процент.
Вот как это выглядит:
var date_percentage = this.get("projects","uz9o3cGSHq7q1p7utujq").map(
res=>{
if (this.date_percentage_calculator(res.data().start_date,res.data().end_date) >= 100) return 100
else if (this.date_percentage_calculator(res.data().start_date,res.data().end_date) <= 0) return 0
else return this.date_percentage_calculator(res.data().start_date,res.data().end_date)
}
).subscribe(calculated_percentage=>{
this.update_proprety("projects","uz9o3cGSHq7q1p7utujq","percentage",calculated_percentage)
})
Теперь проект не может быть изменен, и поэтому средство обновления может быть вызвано только один раз.
Как сделать так, чтобы наблюдаемая повторно отправляла последнее значение, чтобы он мог обновить процентное событие, если наблюдаемое не получило значение?