4.0.0 • Published 3 years ago

p-debounce v4.0.0

Weekly downloads
27,574
License
MIT
Repository
github
Last release
3 years ago

p-debounce

Debounce promise-returning & async functions

Install

$ npm install p-debounce

Usage

import pDebounce from 'p-debounce';

const expensiveCall = async input => input;

const debouncedFn = pDebounce(expensiveCall, 200);

for (const number of [1, 2, 3]) {
	console.log(await debouncedFn(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 debouncedFn = pDebounce.promise(expensiveCall);

for (const number of [1, 2, 3]) {
	console.log(await debouncedFn(number));
}
//=> 1
//=> 2
//=> 3

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…
@theia/preferences@theia/task@theia/core@theia/debug@everything-registry/sub-chunk-2396p-thunkp-funp-promise-utilsnolwallet@devdocsai/react@devpodio/debug@dhub/clibitweb-cli@chanceseed/shoelace-ui@chatjet-ai/react@comet/admin-cms@citizendev/bubble-multi-selectbraincap-org-transcript-editor@comet/cms-admin@currents/playwrightcerebro-cerebro-todoistcerebro-chocolateycerebro-gitiocerebro-npmcerebro-npmscerebro-youdaocerebo-fileio@xrpl/ai-react@viostream/slate-transcript-editorvue-bucket-flow-graph@wnfs-wg/nestvue-chimeraawesome-antdbb-transcript-editorbedrock-setupbedrock-web-account@bedrock/web-account@block65/memoized@block65/demonade@bluecadet/launchpad-monitor@gedit/preference@twind/cli@uci/utils@types/p-debounce@tartjs/core@gqty/reactconnect-depsfileread-library-legacy@markprompt/reactlsp-mode-tsservernext-routes-dirreflowioreact-native-async-image-storereact-native-async-storer3shaper-reactr3shaper-vuepromise-funpromised-gatewaysnowdevsindresorhus.jsslate-transcript-editortest1dwebtextchecker-elementtypescript-language-server-forktypescript-language-server-with-tstypescript-language-server-rcts-langservertrigger.dev@w3block/pixchain-react-metamaskalfred-weigh@abdeeel/react-yo-package@kathondvla/sri-client@likec4/language-server@hixt/hixi@hixt/nitro@hydrofoil/shaperone-wc-shoelacecontainer-registry-sync@infinitebrahmanuniverse/nolb-p-futon-mediafuton-media-cli@mersenneab/builder-plugin-dom@mersenneab/builder-plugin-search-input@mattlyons/typescript-language-servergamewall@nbook/typescript-language-server@nick.heiner/jscodemod@hyperspace/clicskm-weathercskm-youdao@igloo-be/core-cmsentity-gen@joshoy/typescript-language-serverdatoms-cli@ivinokur/core@rschristian/twind-cli@privyid/gitenak@peerbit/shared-loghixi@elastic/typescript-language-server@sidwebworks/async-utils
4.0.0

3 years ago

3.0.2

3 years ago

3.0.1

3 years ago

3.0.0

3 years ago

2.1.0

5 years ago

2.0.0

5 years ago

1.0.0

8 years ago