Thanks to visit codestin.com
Credit goes to github.com

Skip to content

antongolub/repeater

Repository files navigation

repeater

Helper for creating repetitive functions.

buildStatus Coveralls dependencyStatus devDependencyStatus Code Climate js-standard-style Greenkeeper badge

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 and automated calls.
Usage example
    import repeater from '@antongolub/repeater'
    
    const context = {
      i: 0
    }
    const delay = 1000
    function target (step) {
      this.i += step
    }

    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})

About

Helper for creating repetitive functions

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors 6