2017-03-05 5 views
0

質問:こんにちは、私はポモドーロのJS問題に取り組んでいます。私は、sessionTimeがゼロにカウントダウンしたときに、sessionTimeからbreakTimeに切り替えることに問題があります。2つの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、そして同時にbreakTime

  2. startPomodoroTwoを()カウントダウンでしょう、これは動作しますが、私は私が望んでいないということである機能を3回実行する必要があります。

+0

pomodoro jsとは何ですか?また、 '<>'スニペットエディタをクリックして、[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

ありがとう、Urコードが動作し、私の問題を解決してください。 –

関連する問題