Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
Debounce an action, ensuring it doesn't occur more than once for a given period of time.
This is useful as an optimization, for example to ensure that logs are only flushed to disk at most once per second.
Example usage:
printString <-mkDebounce
defaultDebounceSettings
{debounceAction
= putStrLn "Running action" ,debounceFreq
= 5000000 -- 5 seconds }
>>>
printString
Running action>>>
printString
<Wait five seconds> Running action
See the fast-logger package (System.Log.FastLogger) for real-world usage.
Since: 0.1.2
- data DebounceSettings
- defaultDebounceSettings :: DebounceSettings
- debounceFreq :: DebounceSettings -> Int
- debounceAction :: DebounceSettings -> IO ()
- mkDebounce :: DebounceSettings -> IO (IO ())
Type
data DebounceSettings Source #
Settings to control how debouncing should work.
This should be constructed using defaultDebounceSettings
and record
update syntax, e.g.:
let settings =defaultDebounceSettings
{debounceAction
= flushLog }
Since: 0.1.2
defaultDebounceSettings :: DebounceSettings Source #
Default value for creating a DebounceSettings
.
Since: 0.1.2
Accessors
debounceFreq :: DebounceSettings -> Int Source #
Microseconds lag required between subsequence calls to the debounced action.
Default: 1 second (1000000)
Since: 0.1.2
debounceAction :: DebounceSettings -> IO () Source #
Action to be performed.
Note: all exceptions thrown by this action will be silently discarded.
Default: does nothing.
Since: 0.1.2
Creation
mkDebounce :: DebounceSettings -> IO (IO ()) Source #
Generate an action which will trigger the debounced action to be performed. The action will either be performed immediately, or after the current cooldown period has expired.
Since: 0.1.2