Облачные функции Firebase Оптимизация таймера - PullRequest
0 голосов
/ 23 октября 2018

Я не совсем уверен, как рассчитываются вызовы функций облака и секунды процессора, поэтому мой вопрос именно об этом.

Я использую таймер (5 мин-6 ч), которым пользователь не должен манипулировать, также он должен продолжать работать, даже если клиент больше не подключен / не активен.Для этого у меня есть 2 решения:

  1. Установите время, проверяйте каждую секунду и записывайте оставшееся время в базу данных каждый раз так:

    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.

В качестве альтернативы можно было бы просто записать время окончания (конца-конца) в базу данных и вызывать функцию только один раз каждый раз, когда пользователь видит таймер, чтобы проверить, истекло ли время.Таймер может быть просто реализован на клиенте с использованием конечного времени из базы данных, но клиент также должен будет вызывать функцию каждый раз, а не только один раз.

Какое из вышеуказанных решенийбудет лучшим способом с точки зрения оптимизации затрат?Конечно, приветствуются и другие предложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...