2017-03-05 123 views
0

问题:嗨,我正在处理一个番茄酱JS问题。当sessionTime倒计时到零时,我遇到了从sessionTime切换到breakTime的问题。在两个setInterval函数之间切换

可能的解决方案:我试过方法(startPomodoro(),startPomodoroTwo()),但都没有工作。

var countdown; 

var model = { 
    sessionTime: { seconds: 10, isFinished: false}, 
    breakTime: { seconds: 5, isFinished: false}, 

    timer: function(obj){ 
    console.log(obj.seconds); 
    var self = this; 
    countdown = setInterval(function() { 
     obj.seconds--; 
     console.log(obj.seconds); 
     if(obj.seconds <= 0){ 
     obj.isFinished = true; 
     clearInterval(countdown); 
     return; 
     } 
    },500); 
    }, 

    startPomodoro: function(){ 
    this.timer(this.sessionTime) 
    this.timer(this.breakTime) 
    }, 

    startPomodoroTwo: function(){ 
    if(this.sessionTime.isFinished === false){ 
    this.timer(this.sessionTime) 
    } else if (this.breakTime.isFinished === false && this.sessionTime.isFinished === true){ 
    this.timer(this.breakTime) 
    } else { 
    console.log("Finish Pomo"); 
    } 
    } 
} 
  1. startPomodoro(),它只是倒计时sessionTime和课间同时

  2. startPomodoroTwo(),这工作,但我需要执行的函数三次这是不是我想要。

+0

pomodoro js是什么?同时请点击'''''snippet编辑器并给我们一个[mcve] – mplungjan

回答

1

尝试为活动的数组:

var activities = [ 
    {name: 'session', duration: 10}, 
    {name: 'break', duration: 5} 
]; 
var currentActivity = 0; 

然后切换活动当定时器完成。

function startActivity() { 
    console.log(activities[currentActivity]); 
    var duration = activities[currentActivity].duration; 
    var timer = setInterval(function() { 
    duration--; 
    if (!duration) { 
     currentActivity = (currentActivity + 1) % activities.length; 
     clearInterval(timer); 
     startActivity(); 
    } 
    }, 1000); 
} 

尝试不修改活动对象。您的代码会改变引用对象,这意味着您必须在完成活动时将秒数重置为10或5。

+0

谢谢,我们的代码可以解决我的问题。 –