I'd like to build a function that returns false if it's been called less that half a second ago.
timething.timechill=function(){
var last
if (last){
if ((now.getTime()-last)>500){
return true
}
else{
return true
}
}
else {
last=now.getTime()
return false
}}
Any ideas? I'd like to avoid setTimeout() and ignore input if it's coming too quick to avoid overflow. Is this a good practice?
timething.timechill = (function () {
var lastCall = 0;
return function () {
if (new Date() - lastCall < 500)
return false;
lastCall = new Date();
//do stuff
}
})();
The idea here is that (function() { ... })();
will create an anonymous function and run it immediately. timething.timechill
is not assigned this function. Instead, it is assigned the inner function returned by this function.
Note that lastCall
is not declared (using the var
keyword) within that inner function. And when the outer function returns, lastCall
doesn't disappear because the inner function has "enclosed" it by virtue of the fact that it refers to the variable.
When you run timething.timechill
later and it encounters this variable, it will search outside the function's scope for the variable and find the one that was declared earlier. When it returns, the variable still does not disappear, since it was declared outside the function's scope.
It is hard to explain this concept clearly, but it is very useful because lastCall
is invisible to the rest of your code which doesn't need to see it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With