Throttle promise-returning & async functions
It also works with normal functions.
Useful for rate limiting calls to an external API, for example.
$ npm install p-throttle
Here, the throttled function is only called twice a second:
const pThrottle = require('p-throttle');
const now = Date.now();
const throttle = pThrottle({
limit: 2,
interval: 1000
});
const throttled = throttle(index => {
const secDiff = ((Date.now() - now) / 1000).toFixed();
return Promise.resolve(`${index}: ${secDiff}s`);
});
for (let i = 1; i <= 6; i++) {
throttled(i).then(console.log);
}
//=> 1: 0s
//=> 2: 0s
//=> 3: 1s
//=> 4: 1s
//=> 5: 2s
//=> 6: 2s
Returns a throttle
function.
Returns a throttled version of fn
.
Type: object
Both the limit
and interval
options must be specified.
Type: number
Maximum number of calls within an interval
.
Type: number
Timespan for limit
in milliseconds.
Type: Function
Promise-returning/async function or a normal function.
Abort pending executions. All unresolved promises are rejected with a pThrottle.AbortError
error.
- 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…