以不同的值重置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)]); }