以不同的值重置JavaScript间隔?

我有一个小问题,我似乎无法修复。 我有一个简单的JavaScript代码,我想要创build一个随机数量的时间间隔,然后完成后,应该重新开始,然后再进行一个随机的秒数。

我的代码看起来像这样

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)]); } 

我尝试创build第二个函数来重新启动时间间隔,但是此时间间隔只有一个随机数,并且只使用该特定的数字作为持续时间。

为了简化我的Node.js控制台应该显示“now”每个randtimes秒

任何解决scheme?

我很感激任何帮助

当延迟旨在保持一致时, 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(); 

正如Luke所说,使用setTimeout可能会更好。

但是如果你想继续使用setInterval,你可以用clearInterval (提供setInterval函数返回的intervalID)来停止旧的并启动一个新的:

 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)]); }