Как использовать 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);
}
Демо: jsFiddle
4 ответа:
Феликс сказал: Если вы хотите каждый раз менять интервал, используйте
setTimeout
вместо этого. Упрощенный пример, поскольку мне трудно точно следовать тому, что вы хотите, чтобы ваш исходный код делал:doTheRandom(); function doTheRandom() { random = randomizator(60000,200000); // Up to 1 second setTimeout(doTheRandom, randomizator(1000, 2000)); // 1-2 seconds }
setInterval(function() { //your code to be executed every random miliseconds } ,random_interval()); var random_interval=function(){ return Math.random()*1000; }
Если вы хотите случайный интервал, вы можете использовать setTimeout вместо этого. Вот пример, чтобы дать вам идею (не проверено может содержать ошибки):
function setRandomInterval(){ //Add your code here setTimeout(function(){ setRandomInterval(); }, Math.random()*1000);
}
Проблема с setInterval заключается в том, что после его установки интервал фиксируется. Вы можете остановить интервал и начать новый, но setTimeout будет лучшим решением.