2017-10-20 7 views
1

私は修正できないような小さな問題があります。 私は単純なJavaScriptコードを作成して、何秒間のランダムな間隔を作成し、終了後にもう一度やり直して別の無作為な秒数分移動する必要があります。JavaScriptインターバルを別の値で再設定していますか?

私のコードは、この

var selectedtimes = [3000, 5000, 15000, 10000] 
 
var randtimes = selectedtimes[Math.floor(Math.random() * selectedtimes.length)]; 
 

 
var sti = setInterval(function() { 
 
    console.log("now") 
 
}, randtimes); 
 

 
function restartsti() { 
 
    var restartinterval = setInterval(restartsti, selectedtimes[Math.floor(Math.random() * selectedtimes.length)]); 
 
}

のように見える私は間隔を再起動してしまう第2の機能を作成しようとしましたが、現時点では間隔が一つだけ乱数を受け取り、その特定を使用していますnumberを指定します。私のNode.jsのコンソールを簡素化するために

ごとrandtimes秒「今」これまでの任意の解決策を示すべき?

は私が

答えて

5

setIntervalは遅延が一致するように意図されたときに使用することが適切である任意の助けを感謝しています。あなたの遅延が異なるたびにあることを意味するので

は、それがここにsetTimeoutを使用するために、おそらく良いでしょう:ルークが言ったように

var times = [3000, 5000, 10000, 15000]; 
 

 
function start() {  
 
    console.log("now"); 
 
    var randTime = times[Math.floor(Math.random() * times.length)]; 
 
    setTimeout(start, randTime); 
 
} 
 

 
start();

1

が、それはsetTimeoutメソッドを使用して、おそらく良いでしょう。

しかし、あなたがたsetIntervalを使用し続けたい場合は、(のsetInterval関数によって返さINTERVALIDを提供する)clearIntervalと古いものを停止して始めることができ、新たな1:

var selectedtimes = [3000, 5000, 15000, 10000] 

var randtimes = selectedtimes[Math.floor(Math.random() * selectedtimes.length)]; 


var sti = setInterval(function() { 
    console.log("now") 
    }, randtimes); 

function restartsti() { 
    clearInterval(sti); 

    sti = setInterval(function() { 
     console.log("now"); 
     restartsti() 
    }, selectedtimes[Math.floor(Math.random() * selectedtimes.length)]); 
} 
関連する問題