重复定时器功能和逻辑

repeating timer functionality and logic

我正在创建番茄钟计时器 - 间隔应该在第一个完成后以不同的持续时间重复。简化的非工作示例:

var firstDuration=5;
var secondDuration=10;

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

实现此类功能的最佳方式是什么?我还计划使用 Date.now() 而不是 -- 。

如果我正确理解了要求,这将满足您的要求。它将有一个计时器每秒关闭一次,直到 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);
}