@antongolub/repeater
v1.5.2
Published
Helper for creating auto-calling functions
Downloads
59
Maintainers
Readme
@antongolub/repeater
Helper for creating auto-calling functions
Motivation
The wheel was invented a long time ago: repeat. What's the diff?
- Repeater stores the last call params and uses them for next invocations.
- Inherits target's iface.
- Allows to combine
manual
andautomated
calls.
Usage
import repeater from '@antongolub/repeater'
const target = step => { this.i += step }
const context = { i: 0 }
const delay = 1000
const rep = repeater(target, delay, context)
rep(2)
// Imagine, 5 seconds later new 'manual' call occurs
setTimeout(() => rep(1), 5000)
// ~10 seconds after start:
setTimeout(() => console.log(context.i), 10000) // 15
Repeater is just a wrapper around the target function. It exposes several util props:
| Prop | Description |
|-----------|-----------------------------------------|
| delay
| interval in ms |
| timeout
| TimeoutID |
| target
| ref for original target function |
| context
| optional scope |
| limit
| optional remainder of calls |
| args
| arguments of the last invocation |
So, anytime you're let to interrupt the repetitive call by clearing timeout:
clearTimeout(rep.timeout)
Parametrization
const rep1 = repeater(target, delay, context, limit)
const rep2 = repeater({target, delay, context, limit})