Awesome Open Source
Awesome Open Source


🕐 The stateful dynamic interval

build npm

A pauseable and resumeable setInterval built around dynamic-interval


npm install --save stateful-dynamic-interval


import setStatefulDynterval from 'stateful-dynamic-interval'


import { StatefulDynterval } from 'stateful-dynamic-interval'


import { StatefulDynterval } from 'stateful-dynamic-interval'

const timer = new StatefulDynterval(context => console.log('tick', context), 1000)

// ...

You may also customize the underlying timer and can change the duration of the interval on each tick.

Check out the dynamic-interval package for more details.


This script doubles the amount of time between intervals on each iteration, starting with 50ms.

import { StatefulDynterval } from 'stateful-dynamic-interval'

const timer = new StatefulDynterval(context => ({ wait: context.wait * 2 }), 50)

setTimeout(() => {

  setTimeout(() => {
    // this resumed step will only run for the remaining time in the interval,
    // which may be dynamic, meaning it can change on each iteration based on
    // the return value of the callback function (this example is dynamic)
  }, 1000)
}, 1000)


setStatefulDynterval(step, config, api)


Starts the interval. Instantiated StatefulDyntervals will automatically call run unless the lazy config property is set to true.

  • Alias: play


Stops or clears out the interval. Once an interval has been cleared it cannot be resumed.

  • Alias: stop


Pauses the interval so that it can be resumed at a later point.


Resumes a previously paused interval.


Synchronizes the parent interval with a child interval.

Child intervals automatically subscribe to the following topics of their parents:

  • run
  • clear
  • pause
  • resume


Desynchronizes a parent interval from all of its children by unsubscribing them from their parent topics.



Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
Javascript (1,551,389
Time (1,443
Clock (803
Interval (215
Iteration (161
Related Projects