Javascript 在第一个计时器完成后,执行第二个计时器的倒计时 我是一个试图创建Pomotoro时钟项目的编程初学者,希望在会话倒计时完成后触发中断倒计时。就像照片上那样。

Javascript 在第一个计时器完成后,执行第二个计时器的倒计时 我是一个试图创建Pomotoro时钟项目的编程初学者,希望在会话倒计时完成后触发中断倒计时。就像照片上那样。,javascript,timer,Javascript,Timer,定时器是通过输入字段设置的,根据中断定时器应该倒计时设置值的想法,实际上它倒计时会话的值 Javascript代码 function sessionTimer(seconds) { clearInterval(countdown); const t = new Date(); const end = t.getTime() + seconds * 1000; displayTimerLeftSession(seconds); console.log({ t,

定时器是通过输入字段设置的,根据中断定时器应该倒计时设置值的想法,实际上它倒计时会话的值


Javascript代码

function sessionTimer(seconds) {
  clearInterval(countdown);
  const t = new Date();
  const end = t.getTime() + seconds * 1000;
  displayTimerLeftSession(seconds);
  console.log({
    t,
    end
  });

  countdown = setInterval(() => {
    if (!isPaused) {
      const remainSeconds = Math.round((end - t.getTime()) / 1000);
      if (remainSeconds < 0) {
        clearInterval(countdown);
        breakTimer(seconds);
        return;
      }
      displayTimerLeftSession(remainSeconds);
      t.setSeconds(t.getSeconds() + 1);
    }
  }, 1000);
  t.setSeconds(t.getSeconds() + 1) - 1;
}
函数会话计时器(秒){
清除间隔(倒计时);
const t=新日期();
const end=t.getTime()+秒*1000;
displayTimerLeftSession(秒);
console.log({
T
结束
});
倒计时=设置间隔(()=>{
如果(!i暂停){
const remainSeconds=Math.round((end-t.getTime())/1000);
如果(剩余的约束小于0){
清除间隔(倒计时);
中断计时器(秒);
返回;
}
显示TimerLeftSession(剩余时间);
t、 设置秒(t.getSeconds()+1);
}
}, 1000);
t、 设置秒(t.getSeconds()+1)-1;
}


我知道问题是什么。因为我在sessionTimer函数中调用了breakTimer,但是我不知道如何在会话结束后使breakTimer倒计时。我的代码很草率,无论如何都需要重构。请不要苛责我的工作。如果您想查看代码,请参考

,希望我已经正确地解释了您的问题。您可以做的一件事是在计时器完成后触发回调。在
n
秒过后,清除间隔并启动回调,这表明计时器已完成

函数计时器(秒,回调){
var倒计时=函数(){
console.log(秒);
如果(秒--==0){
清除间隔(时间);
回调函数()
}
};
倒计时();
var时间=设置间隔(倒计时,1000);
}
log('Starting session timer…');
定时器(5,函数(){
log('Session timer complete.Starting break timer…');
定时器(5,函数(){
日志('中断计时器完成');
});

});我已经创建了breakSeconds全局变量,并在提交时在函数中更新它

document.customFormBreak.addEventListener('submit', function(e) {
  e.preventDefault();
  breakSeconds = this.minutesBreak.value * 60;
  displayTimerLeftBreak(breakSeconds);
  this.reset();
});
如果要查看代码,请转到