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.
$ npm install throttle-promise
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
Returns a throttled version of fn
.
Type: Function
Promise-returning/async function or a normal function.
Type: number
Maximum number of calls within an interval
.
Type: number
Timespan for limit
in milliseconds.
Abort pending executions. All unresolved promises are rejected with a throttle.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…
MIT © Sindre Sorhus