Запретить вызов функции более 1 раза в секунду
Как в Javascript запретить вызов функции более 1 раза в секунду...
|
setInterval(function () { // код ф-ии... },1000) |
Пробую вот так..не работает..
<input type='submit' onClick="setInterval(alert('прошла 3 сек'),3000)" /> |
Любая функция в js-это фактически объект, т.е. допускает присваивание свойствам. Просто функции присваивайте, когда ее запускали, и сравнивайте внутри - если слишком быстро, выходим сразу.
Пример function aaa(){ if(arguments.callee.last_run){ alert('My last run='+arguments.callee.last_run); }else{ alert('First run'); } arguments.callee.last_run=new Date(); return true; } aaa(); setInterval(aaa,10000); |
бр....
что это? Зачем? <script> setInterval(function () { alert('прошло 3 секунды') },3000) </script> |
И где тут запрет вызова??????
Я так понял, человек хочет, что бы слишком быстро не кликали на input |
в библиотеках бывают подобные методы,
например в undersore http://documentcloud.github.com/underscore/#throttle <script src="http://documentcloud.github.com/underscore/underscore-min.js"></script> <script> function x() { console.log(1); } var y = _.throttle(x, 1000); // x будет вызываться не чаще одного раза в секунду setInterval(y, 100); // вызываем y десять раз в секунду </script> |
Так ТС не описал тему, я думал у ему задержку надо сделать..
|
asdasd,
Вариант...для наглядности время запрета увеличено до 10 сек. <!DOCTYPE html> <html > <head> <title></title> </head> <body> <script type="text/javascript"> var stop; function foo() //ваша функция { alert(1) } function go(foo) { stop || (stop = !0, window.setTimeout("stop=!1", 10E3),foo()); }; </script> <input type="button" name="" value="go" onclick="go(foo)" /> </body> </html> |
всем спасибо!! сделал)
|
Часовой пояс GMT +3, время: 14:29. |