Awesome
p-debounce
Debounce promise-returning & async functions
Install
npm install p-debounce
Usage
import pDebounce from 'p-debounce';
const expensiveCall = async input => input;
const debouncedFunction = pDebounce(expensiveCall, 200);
for (const number of [1, 2, 3]) {
(async () => {
console.log(await debouncedFunction(number));
})();
}
//=> 3
//=> 3
//=> 3
API
pDebounce(fn, wait, options?)
Returns a function that delays calling fn
until after wait
milliseconds have elapsed since the last time it was called.
fn
Type: Function
Promise-returning/async function to debounce.
wait
Type: number
Milliseconds to wait before calling fn
.
options
Type: object
before
Type: boolean
Default: false
Call the fn
on the leading edge of the timeout. Meaning immediately, instead of waiting for wait
milliseconds.
pDebounce.promise(function_)
Execute function_
unless a previous call is still pending, in which case, return the pending promise. Useful, for example, to avoid processing extra button clicks if the previous one is not complete.
function_
Type: Function
Promise-returning/async function to debounce.
import {setTimeout as delay} from 'timers/promises';
import pDebounce from 'p-debounce';
const expensiveCall = async value => {
await delay(200);
return value;
}
const debouncedFunction = pDebounce.promise(expensiveCall);
for (const number of [1, 2, 3]) {
(async () => {
console.log(await debouncedFunction(number));
})();
}
//=> 1
//=> 1
//=> 1
Related
- p-throttle - Throttle promise-returning & async functions
- p-limit - Run multiple promise-returning & async functions with limited concurrency
- p-memoize - Memoize promise-returning & async functions
- debounce-fn - Debounce a function
- More…