5

该函数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);
}

演示:jsFiddle

4

4 回答 4

5

Felix 说过:如果你想每次都改变间隔,就setTimeout改用。简化示例,因为我无法完全按照您希望原始代码执行的操作:

doTheRandom();
function doTheRandom() {
    random = randomizator(60000,200000);
    // Up to 1 second
    setTimeout(doTheRandom, randomizator(1000, 2000)); // 1-2 seconds
}
于 2013-07-16T14:53:19.887 回答
1
    setInterval(function() {
//your code to be executed every random miliseconds
} ,random_interval());


var random_interval=function(){
return Math.random()*1000;
}
于 2013-07-16T14:55:34.090 回答
0

如果你想要一个随机间隔,你可以使用 setTimeout 代替。这是一个给你一个想法的例子(未经测试可能包含错误):

function setRandomInterval(){
//Add your code here
setTimeout(function(){
  setRandomInterval();
}, Math.random()*1000);

}

setInterval 的问题是,一旦你设置了它,时间间隔就固定了。您可以停止间隔并开始一个新的间隔,但 setTimeout 将是更好的解决方案。

于 2013-07-16T14:58:02.137 回答
0

由于setInterval(fn,PERIOD)using的实现setTimeout是:

     setTimeout(fn,iteration*PERIOD)  // iteration ∈ [1,2,3...,n]

所以,你需要的是使用setTimeout,随机化iteration*PERIOD

于 2016-09-13T17:18:47.230 回答