Рандомное время в 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, время: 01:37. |