函数showRandom
每1000毫秒执行一次,但我希望它每隔random
毫秒执行一次..有什么解决办法吗?谢谢!
var random = 1000;
setInterval(function() {random = randomizator(60000,200000);} ,1000);
setInterval(function() {showRandom(random);}, random);
function randomizator(a,b)
{
return Math.floor(Math.random()*b) + a;
}
function showRandom(random)
{
$('#test').text(random);
}
DEMO:jsFiddle
答案 0 :(得分:5)
费利克斯说:如果你想每次更改间隔,请改用setTimeout
。简化示例,因为我无法完全遵循您希望原始代码执行的操作:
doTheRandom();
function doTheRandom() {
random = randomizator(60000,200000);
// Up to 1 second
setTimeout(doTheRandom, randomizator(1000, 2000)); // 1-2 seconds
}
答案 1 :(得分:1)
setInterval(function() {
//your code to be executed every random miliseconds
} ,random_interval());
var random_interval=function(){
return Math.random()*1000;
}
答案 2 :(得分:0)
如果你想要一个随机间隔,你可以改用setTimeout。下面是一个给你一个想法的例子(未测试可能包含错误):
function setRandomInterval(){
//Add your code here
setTimeout(function(){
setRandomInterval();
}, Math.random()*1000);
}
setInterval的问题是,一旦你设置它,间隔是固定的。您可以停止间隔并开始新的间隔,但setTimeout将是更好的解决方案。
答案 3 :(得分:0)
由于setInterval(fn,PERIOD)
使用setTimeout
的实施是:
setTimeout(fn,iteration*PERIOD) // iteration ∈ [1,2,3...,n]
因此,您需要使用setTimeout
,随机化iteration*PERIOD