Запретить вызов функции более 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, время: 07:54. |