Elastic Loop
Runs an interval with variable timeout. Useful for loops adapting to heavy load or other kind of situations.
Get Started
npm install elastic-loop
API
loop(function, stress, [options])
Runs function
in loop, mutating timeout depending on stress
. Returns instance containing end
function.
function
: Interval function. (Function)stress
: Function returning bool. (Function)options
: optional, but must be an Object if specified, containing zero or more of the following properties:timeout
: Default interval timeout in milliseconds. (Number; default:1000
)modifier
: Timeout multiplier on stress. (Float; default:1.20
)min
: Min stress multiplier. (Number|Float; default:1
)max
: Max stress multiplier. (Number|Float; default:0:infinite
)
Usage
const loop = const busy = const monitor = // @cycle: current cycle fingerprint { // → @cycle: { timeout: 1000, stress: 1 }} { // returns true if overloaded, false otherwise return monitorblocked} const cycle = // cycle.end()
License
See the License file.