while循环条件和setInterval()

时间:2017-02-25 15:20:01

标签: javascript

我想在前言中说我对JS的了解很少,因为你可能会说,我也不知道该怎么称呼它。

无论如何,我正在尝试创建一个简单的脚本,它最多可以计算30分钟,然后在30分钟时使用while循环返回一条消息。但是,我想要heliTime =的条件! endTime只能每分钟运行一次。我可以让脚本每分钟运行一次然后在每分钟运行整个功能而不是只检查一次。

setInterval(function arran() {
    var startTime = 0;
    var minutes = 1000 * 60;
    //var seconds = 1000;
    var heliTime = startTime
    var endTime = 30 * minutes;
    var messageCount = 0;

while (heliTime !== endTime) {
  var messageCount = messageCount + 1;
  console.log("No heli yet! " + messageCount);
  var heliTime = heliTime + minutes;
}
return console.log("Heli should be arriving soon!");
},60 * 1000);

messageCount变量只是调试,因此可以忽略,任何有关我的问题的帮助将不胜感激。 :)

1 个答案:

答案 0 :(得分:0)

我想说通过setInterval作为Tobbe Widner建议的回调频率测量实时性似乎是一个奇怪的想法。我认为最好使用一些明确的时间源,例如

function runDelayedWithProgress(waitIntervalSeconds, delayedAction, progressIntervalSeconds, progressAction) {
  var startTime = new Date().getTime();
  var iid = setInterval(function() {
     var curTime = new Date().getTime()
     var elapsedSeconds = (curTime - startTime)/1000;
     if(elapsedSeconds >= waitIntervalSeconds) {
        clearInterval(iid);
        delayedAction();
     }
     else {
       progressAction(Math.round(elapsedSeconds));
     }
  }, progressIntervalSeconds*1000);
}

runDelayedWithProgress(30*60, function() {
      console.log("Heli should be arriving soon!")
   }, 
   60, function(elapsed){
     console.log("No heli yet! " + elapsed);
});