Nachos Preventing Motivation

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

    Install

    npm i interval-promise

    DownloadsWeekly Downloads

    11,158

    Version

    1.4.0

    License

    MIT

    Unpacked Size

    20.2 kB

    Total Files

    13

    Last publish

    Collaborators

    • andyfleming