我有一个小问题,我似乎无法修复。 我有一个简单的JavaScript代码,我想创建一个随机数秒的Interval,然后在它完成之后它应该重新开始并再次进行随机的秒数。
我的代码看起来像这样
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)]);
}

我尝试创建第二个重启间隔的函数,但此时间隔只需要一个随机数,只使用该特定数字作为持续时间。
为了简化我的Node.js控制台应该显示" now"每个randtimes秒
对此有何解决方案?
我很感激你的帮助
答案 0 :(得分: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 :(得分:1)
正如卢克所说,使用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)]);
}