повторяющиеся функции таймера и логика - PullRequest
0 голосов
/ 27 августа 2018

Я создаю таймер pomodoro - интервал должен повторяться с различной продолжительностью после завершения первого. упрощенный не рабочий экзамен:

var firstDuration=5;
var secondDuration=10;

var timer=setInterval(()=>{
firstDuration--
if (firstDuration<0){
clearInterval(timer) .. 
//secondDuration-- dont know how to continue..

Каков наилучший способ реализации такой функциональности? Также я планирую использовать Date.now (), а не -.

1 Ответ

0 голосов
/ 27 августа 2018

Если я правильно понял требования, это будет делать то, что вы хотите. Таймер отключается каждую секунду до истечения 20 минут, затем каждую секунду до истечения 5 минут. В этот момент он начинается заново с 20-минутным обратным отсчетом.

const workDurationSeconds = 20 * 60;
const breakDurationSeconds = 5 * 60;

function startCountdown(session) {
    let duration;
    if (session === 'work') {
      duration = workDurationSeconds;
    } else {
      duration = breakDurationSeconds;
    }

    let id = setInterval(() => {
      duration--;
      if (duration <= 0) {
        clearInterval(id);
        startCountdown(session === 'work' ? 'break' : 'work');
      }
    }, 1000);
}
...