如何每次使用随机毫秒数的setInterval?

时间:2013-07-16 14:46:33

标签: javascript random setinterval

函数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

4 个答案:

答案 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