Рандомное время в setInterval
есть функция:
function test(){ alert('random alert'); } нужно чтоб функция выполнялась в разное время (от 1 до 10 секунд) setInterval('test()' //тут рандомное время); можно создать переменную с Math.random() и вставить переменную вместо времени? |
//рандом от min до max
function rand(min, max){
return (max-min)*Math.random()+min
}
// команда return означает то, что функция будет подставлять НА СВОЕ МЕСТО после того как выполнится)))
// в данном случае подставляется то, что посчитает выражение (max-min)*Math.random()+min, а оно подсчитает случайное число между числами min и max включая)
//тест()
function test(){
alert('ня!')
}
//запускаем тест() используя рандом
setInterval('test()' , rand(1000, 10000) );
|
function test(text){
alert('random alert ' + text);
}
(function runInterval() {
interval = Math.random()*1000*9 + 1000;
setTimeout(function(){
test(interval);
runInterval();
}, interval);
})()
|
Если не накосячил, а за мной это сегодня наблюдается :) , примерно так
(function() {
var x = (Math.random() * 10) + 1 >> 0;
alert("следующий вызов ~ " + x + " сек.");
setTimeout(arguments.callee, x * 1000);
})();
|
мой вариант как обычно лучший)))
помогает понять КАК)) и не содержит ненужных понтов и замыканий и.т.п.)) привет всем) |
Цитата:
|
всем спасибо) выбрал вариант Аватар для Livaanderiamarum'a :)
|
Цитата:
2. Где там замыкание? :) var x = (Math.random() * 10) + 1 >> 0; //эту строку можно запистаь без скобок, т.е. var x = Math.random() * 10 + 1 >> 0; |
Цитата:
Цитата:
|
Цитата:
разве нет)? человеку же не понятно что ты написал) тогда в чем цель твоего обьяснения)? дать готовый вариант? он он не совсем это хотел) я бы предпочел научить его как делать рандом, именно это он и не понимал) |
Цитата:
|
А причём здесь
Цитата:
|
Цитата:
|
Цитата:
http://shamansir.github.com/JavaScri...other.timeouts Цитата:
|
Цитата:
|
Цитата:
или он лучше от того что человек не разбирающийся в скрипте сказал что он лучше? |
Цитата:
если бы я делал себе я бы либо сделал как нерв (он немного неравнодушен к экономии памяти) , либо декларнул функцию и сделал обычный сет таймаут и автозапуск через рандомтайм декларнул чтобы намеренно засрать область |
Livaanderiamarum,
блин, читать как ты себя восхваляешь противно как минимум. перейди по ссылке что дал и попробуй понять почему у тебя бред. Цитата:
|
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
на самом деле люди понтовались. получили задание и начали соревноваться кто более оптимально сделает и заковыристей. и плевать вы хотели а человека который вопрос задал. слушай, я конечно троллил тут пару раз особенно когда тупость спрашивают, но тем что я сделал лучший вариант я хотел подчеркнуть то что я реал не понимаю зачем вы начали делать все эти заумные функции.. вы ВСЕГДА так делаете! Человек не понял как рандом делать! как реализовать вызов он сам догадается, я даже намеренно поставил интервал за место таймера, чтобы у него ошибка была которую он бы сам исправил. При том он умеет обращаться с переменными, он просто не правильно сформулировал вопрос. а он был таков "Ребята, как сделать рандом от стольки то до стольки то" вызов тут совершенно не при чем, тема не про это! |
Цитата:
а то что не приятно то хорошо. буду писать открытым текстом что я имею ввиду) я не думаю что я лучше вас шарю) |
Livaanderiamarum, ты вообще классный, я бы хотел быть тобой. Мне очень жаль, что я не ты.
|
Цитата:
Ваш вариант - гавно, вы ничего не понимаете в кошерном JS-программировании. |
Цитата:
|
Цитата:
ну максимум что я ошибку может и зря оставил, но я думаю с этим он сам разберется заметив что переодичность не меняется) главное что я дал ему инструмент и показал что чтобы что-то куда-то вставить не обязательно класть это в переменную, показал что функции могут подставлять на свое место результат своей работы с помощью команды ретурн), а вот ребята ни чего не показали ему)) ^__^ может я плохой учитель((((? может я говенный учитель( и ни чего не понимаю в айти((? как это исправить(? что не так в моей функции(? она же идеальна!! если нет, то укажи на минусы, а не сливай карму! |
Цитата:
setInterval(*!*'test()'*/!* , rand(1000, 10000) ); Передавать строку заместо функции - некошерно. Плюс, у вас в ф-ции спокойно может получиться дробное время. Две причины, по которым ваш ответ можно признать, мягко говоря, не самым лучшим. Цитата:
Цитата:
|
Цитата:
(function test(min, max){
alert('ня!')
setTimeout(function(){test(min, max)}, (max-min)*Math.random()+min);
})(1000, 5000)
я прощен(((? я минут 40 писал это исправляя свои ошибки... норма(? может как то контекст сохранять? или не? я думаю ... хотя может и да? может нужно ему было этот вариант дать? чтобы он ни хрена не понял а тупо копировал его? не не, серьезно, а то так он мозги напрягать начнет((... p.s. к сведению, это лучший вариант из всех точек зрения(хотя вариант нерва лучше в том что рандомное значение заранее известно) с этим ни кто не поспорит), но этот вариант не понятен человеку и не отвечает на его вопросы. |
Одно из двух: это или немо или соловей.
|
Цитата:
|
Livaanderiamarum, да, так лучше.
FINoM, не думаю. Он третья сила)) Livaanderiamarum, запрос в поиск "немо" по этому форуму. |
Цитата:
|
Цитата:
|
Livaanderiamarum, проблема не в том, что пользователь получил слишком простой вариант. Проблема в том, что пользователь получил неправильный вариант. А он этот вариант запомнит и будет использовать. Поэтому ваш вариант плох.
|
Цитата:
в любом случае я предоставил ему генератор по диапазону включая. вынес в отдельную функцию чтобы он мог юзать. я как понял ему именно это и не понятно было. еще я подумал что он думает что можно только переменными переменные значения передавать. я показал что не обязательно сохранять в промежуточной переменной что-либо чтобы его передать, показать что функции могут "превращаться" в результат своей работы. да, и небольшой секрет, 100% того что я спрашиваю на форуме я знаю. но на некоторые темы хочется поболтать, либо поспорить потому что я считаю что сделали не правильно, например. |
да, кстати вот как бы я сделал обратный таймер, если уж он мне нужен был
<span id='ня'></span>
<script type='text/javascript'>
(function timerFunction(s,m,h, timer, start){
if(s){
timer = (s + (m?m:0)*60 + (h?h:0)*3600) * 1000
start = (new Date()).getTime()
}
var last = timer - ((new Date()).getTime() - start),
timeout = last.toString().slice(-3)
document.getElementById('ня').innerHTML = last
setTimeout(function(){ timerFunction(0,0,0,timer,start) },
timeout>0&&timeout>500?timeout:timeout<500?1000-timeout:1000)
})(10, 1) //секунды, минуты, часы
</script>
|
Цитата:
И успокойтесь вы с вашим таймером. |
Цитата:
|
Цитата:
Цитата:
аалог - помочь старушке донести её сумки до дома, и с потом ее дома ограбить. |
| Часовой пояс GMT +3, время: 03:38. |