«simple function throttling ( time gate, time limiter, whatever you want to call it )» by hems
on 24 Dec'13 15:38 inA friend of mine asked me how to limit a function to happen at maximun rate of 1 time every N seconds..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
(
~needed_interval = 20;
~funk = {
// if last time isn't defined, create it with 1000 seconds ago time
if( ~last_time.isNil ) {
~last_time = Date.getDate.bootSeconds;
~last_time = ~last_time - 1000;
};
// if needed interval has passed, execute the funkie
if( ( Date.getDate.bootSeconds - ~last_time ) > ~needed_interval ) {
// safe last execution time, so next calls will have to wait the needed interval
~last_time = Date.getDate.bootSeconds;
( "SOMETHING HAPPENS HERE AT MAXIMUN RATE OF 1 TIME EACH" + ~needed_interval + " SECONDS " );
} {
( "YOU STILL HAVE TO WAIT" );
}
};
)
~funk.value()
reception
comments