throttle-promise

    1.0.4 • Public • Published

    throttle-promise

    Throttle promise-returning & async functions

    It also works with normal functions.

    Useful for rate limiting calls to an external API, for example.

    NOTE: This is a fork of p-throttle, but without ES6 in the source code.

    Install

    $ npm install throttle-promise
    

    Usage

    Here, the trottled function is only called twice a second:

    const throttle = require('throttle-promise');
     
    const now = Date.now();
     
    const throttled = throttle(i => {
        const secDiff = ((Date.now() - now) / 1000).toFixed();
        return Promise.resolve(`${i}${secDiff}s`);
    }, 2, 1000);
     
    for (let i = 1; i <= 6; i++) {
        throttled(i).then(console.log);
    }
    //=> 1: 0s
    //=> 2: 0s
    //=> 3: 1s
    //=> 4: 1s
    //=> 5: 2s
    //=> 6: 2s

    API

    throttle(fn, limit, interval)

    Returns a throttled version of fn.

    fn

    Type: Function

    Promise-returning/async function or a normal function.

    limit

    Type: number

    Maximum number of calls within an interval.

    interval

    Type: number

    Timespan for limit in milliseconds.

    throttledFn.abort()

    Abort pending executions. All unresolved promises are rejected with a throttle.AbortError error.

    Related

    • p-debounce - Debounce promise-returning & async functions
    • p-limit - Run multiple promise-returning & async functions with limited concurrency
    • p-memoize - Memoize promise-returning & async functions
    • More…

    License

    MIT © Sindre Sorhus

    Install

    npm i throttle-promise

    DownloadsWeekly Downloads

    48

    Version

    1.0.4

    License

    MIT

    Last publish

    Collaborators

    • restlessbit