2017-02-25 9 views
-4

は、私はあなたがおそらく私も何タイトルこれまで確認されませんでした、伝えることができるようになりますように私はJSのごくわずかな知識を持っていると言って、これを前置きしたいものの。ループの条件としたsetInterval()

とにかく、私は30分までカウントし、30分後にはwhileループを使用してメッセージを返す単純なスクリプトを作成しようとしています。しかし、私はheliTime =の条件が欲しいです! endTimeは1分ごとに実行されます。私はスクリプトを毎分実行することができますが、ただ1つのチェックではなく、毎分機能を実行します。

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

は私が提案しTobbe WidnerなどのsetIntervalによって、コールバックの度数によってリアルタイムに計測する変な考え方として私には思われると言うでしょう。

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です) –