Awesome Open Source
Awesome Open Source

stateful-dynamic-interval

🕐 The stateful dynamic interval


build npm

A pauseable and resumeable setInterval built around dynamic-interval

Install

npm install --save stateful-dynamic-interval

then

import setStatefulDynterval from 'stateful-dynamic-interval'

or

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

Usage

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

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

timer.pause()
// ...
timer.resume()

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.

Example

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(() => {
  timer.pause()

  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)
    timer.resume()
  }, 1000)
}, 1000)

Interface

setStatefulDynterval(step, config, api)

.run()

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

  • Alias: play

.clear()

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

  • Alias: stop

.pause()

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

.resume()

Resumes a previously paused interval.

.add(interval)

Synchronizes the parent interval with a child interval.

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

  • run
  • clear
  • pause
  • resume

.detach()

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

License

MIT


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