2017-02-25 156 views
-4

我想說,這是因爲我很少了解JS,因爲你可能會知道,我也不知道該怎麼稱呼它。雖然循環條件和setInterval()

無論如何,我試圖做一個簡單的腳本,它計數達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變量只是調試,這樣可以忽略不計,與我的問題任何幫助將不勝感激。 :)

回答

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); 
}); 
+0

完全謝謝。不熟悉大多數這一點,但我必須研究它。我試圖按照我的方式去做的原因主要是缺乏知識。 –

+0

謝謝你的提醒。當然你對實時處理是正確的。實際上我對自己有些慚愧,因爲我應該知道這一點(我參與了圖形緩衝區處理的編程,實時處理可以說是非常重要的xD) –