14 lines
379 B
CoffeeScript
14 lines
379 B
CoffeeScript
limits = {}
|
|
call_after_interval = {}
|
|
window.RateLimit = (interval, fn) ->
|
|
if not limits[fn]
|
|
call_after_interval[fn] = false
|
|
fn() # First call is not delayed
|
|
limits[fn] = setTimeout (->
|
|
if call_after_interval[fn]
|
|
fn()
|
|
delete limits[fn]
|
|
delete call_after_interval[fn]
|
|
), interval
|
|
else # Called within iterval, delay the call
|
|
call_after_interval[fn] = true
|