Я не совсем уверен, как рассчитываются вызовы функций облака и секунды процессора, поэтому мой вопрос именно об этом.
Я использую таймер (5 мин-6 ч), которым пользователь не должен манипулировать, также он должен продолжать работать, даже если клиент больше не подключен / не активен.Для этого у меня есть 2 решения:
Установите время, проверяйте каждую секунду и записывайте оставшееся время в базу данных каждый раз так:
let endsAt = Date.now();
endsAt += milliseconds;
const timeout = setInterval(countDown, 1000);
function countDown() {
setTime(Math.max(0, (endsAt) - Date.now()));
}
function setTime(remaining) {
if(remaining > 0){
timeReference.set(remaining);
} else{
timeReference.set(0);
clearInterval(timeout);
}
}
Клиенту просто нужно внедрить Listener, чтобы проверить, достигает ли оставшееся время 0.
В качестве альтернативы можно было бы просто записать время окончания (конца-конца) в базу данных и вызывать функцию только один раз каждый раз, когда пользователь видит таймер, чтобы проверить, истекло ли время.Таймер может быть просто реализован на клиенте с использованием конечного времени из базы данных, но клиент также должен будет вызывать функцию каждый раз, а не только один раз.
Какое из вышеуказанных решенийбудет лучшим способом с точки зрения оптимизации затрат?Конечно, приветствуются и другие предложения.