• Таймер обратного отсчета с уведомлением. Как сделать?

    Efrosinium
    @Efrosinium
    Full Stack Developer
    Для вывода сообщения лучше написать отдельную функцию.

    Например:
    const end = () => {
    	alert('end');
    }

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

    Функция step() будет выглядеть следующим образом:
    const step = () => {
      if( state.timeleft.seconds-1 < 0 ){
        if( state.timeleft.minutes !== 0 ){
          state.timeleft.seconds = 59;
          state.timeleft.minutes = ( state.timeleft.minutes-1 < 0)  ? 0 : state.timeleft.minutes-1;
        } else {
        	clearInterval( state.timerId );
            end();
        }
      } else {
        state.timeleft.seconds--;
      }
      render();
    }

    Мы вызвали end() в месте, где происходит clearInterval(). Поэтому, сообщение будет вызвано после того, как на таймере будет 00:00.
    Ответ написан
    1 комментарий