interval-promise
TypeScript icon, indicating that this package has built-in type declarations

1.4.0 • Public • Published

Interval Promise

NPM Version Build Status Coverage Status

Overview

This library provides a simple mechanism for running a promise with a given amount of time between executions.

Standard Javascript » setInterval()

traditional interval

interval-promise » interval()

interval promise

Installation

npm install interval-promise

Usage

Simple example using async-await

const interval = require('interval-promise')
 
// Run a function 10 times with 1 second between each iteration
interval(async () => {
    await someOtherPromiseReturningFunction()
    await another()
}, 1000, {iterations: 10})

API

interval(func, intervalLength, options = {}) // returns Promise<undefined>

Arguments

Argument Attritubes Description
func function Required
Function to execute for each interval. MUST return a promise.

Two arguments are passed to this function.
  • iterationNumber number — The iteration number (starting at 1)
  • stop function — used to "stop" (skipping all remaining iterations)
intervalLength number | function Required
Length in ms to wait between iterations. Should be (or return) a non-negative integer.

If a function is used, one parameter iterationNumber (starting at 1) is passed.
options object Optional settings (detailed below).
options.iterations number Default: Infinity
The number of times to execute the function. Must be Infinity or an integer greater than 0.
options.stopOnError boolean Default: true
If true, no subsequent calls will be made. The promise returned by interval() will be rejected and pass through the error thrown.

Project Values

  • Approachability — Basic usage should be concise and readable.
  • Debuggability — Error feedback should be helpful and error handling options should be flexible.
  • Stability — Functionality should be well-tested and reliable.

Acknowledgements

This library was inspired by reissue.

FAQ

How can I stop the interval from outside the interval function?

There isn't currently direct feature to stop the iterations externally. You can, however, achieve this by checking a variable in the parent scope (of where the function is defined). Check out the code below.

const interval = require('interval-promise')
 
let stoppedExternally = false
const stopExternally = () => { stoppedExternally = true }
 
interval(async (iteration, stop) => {
 
    if (stoppedExternally) {
        stop()
    }
    
    // ... normal functionality ...
    
}, 1000)
 
// Some other work...
someOtherWork().then(() => {
 
    // Now that our "other work" is done, we can stop our interval above with:
    stopExternally()
 
})

Dependencies (0)

    Dev Dependencies (4)

    Package Sidebar

    Install

    npm i interval-promise

    Weekly Downloads

    9,035

    Version

    1.4.0

    License

    MIT

    Unpacked Size

    20.2 kB

    Total Files

    13

    Last publish

    Collaborators

    • andyfleming