问题:嗨,我正在研究番茄钟问题。当sessionTime倒计时为零时,我遇到从sessionTime切换到breakTime的问题。
可能的解决方案:我尝试了方法(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");
}
}
}
startPomodoro(),它只会倒计时sessionTime和breakTime
startPomodoroTwo(),这有效,但我需要执行三次这个功能,这不是我想要的。
答案 0 :(得分: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。