2016-07-24 10 views
0

時間を監視し、5分ごとにトリガーする(実際には5分-1秒、たとえばxx:59など)高精度のタイマー/クロックが必要でした。非同期である必要があったのは、5分のマークのトリガーがバックグラウンドでタスクを実行する機能を呼び出すためです。5分ごとにトリガーを持つタイマー

だから私はこのスーパーシンプルなルーチンを思いついた。私はフィードバックを探しています。私は何か違うことをしなければなりませんか?これは実稼働環境で使用するのに十分な信頼できるソリューションですか?勧告や批判は大歓迎です。良い、悪い、または無関心!

**編集:私はおそらくという名前の関数としての関数を定義し、その後のsetIntervalになり minutes = (mminutes < 10 ? "0" : "") + mminutes;

  var minuteData,hours,minutes,seconds; 

      setInterval(function() { 
      var date = new Date; 
      hours = date.getHours(); 
      mminutes = date.getMinutes(); 
      seconds = date.getSeconds(); 
      minutes = (mminutes < 10 ? "0" : "") + mminutes; 
      //get the second digit of minutes 
      minuteData = minutes.toString()[1]; 
      console.log(minuteData); 
      //test if at time x4:59 or x9:59, hence 1 sec before the 5min interval 
      var trigger = ((seconds == 59 && (minuteData == "9" || minuteData == "4")) ? true : false); 
      console.log(trigger); 
      //trigger is just a proxy for a task that will be called 

      }, 1000); 
+0

を、ページの読み込みにそれを呼び出すか、など具体的な行動にすることができます。x [49]:59.0またはX :x [49]:59.999 - ほとんど差がありません –

+0

ページがフォーカスを失った場合、これは非常に不正確です。私はrequestAnimationFrameが助けるかもしれないと思ったが、それはない –

答えて

1

- 関数を呼び出す:このコード行を忘れました。おそらく同じ性能がありますが、この文句を言わない...それは、xで引き起こす可能性が「正確」で

function testTime(){ 
      var minuteData,hours,minutes,seconds; 
      var date = new Date; 
      hours = date.getHours(); 
      minutes = date.getMinutes(); 
      seconds = date.getSeconds(); 
      //get the second digit of minutes 
      minuteData = minutes.toString()[1]; 
      console.log(minuteData); 
      //test if at time x4:59 or x9:59, hence 1 sec before the 5min interval 
      var trigger = ((seconds == 59 && (minuteData == "9" || minuteData == "4")) ? true : false); 
      console.log(trigger); 
} 


setInterval(function() {testTime()}, 1000); 
+0

また、コメントのようにフォーカスを失った場合の時間を格納するローカルストレージを使用することもできます精度のためにミリ秒に下がる必要があるかもしれません – gavgrif

関連する問題