Skip to content

Function: deferredCallback()

deferredCallback<TDefault, ThisArg, Delay, CbArgs>(callback, options): <TResult>(...args) => IPromisE<TResult>

Defined in: packages/promise/src/deferredCallback.ts:35

Function

PromisE.deferredCallback

Type Parameters

TDefault

TDefault = unknown

ThisArg

ThisArg = unknown

Delay

Delay = unknown

CbArgs

CbArgs extends unknown[] = unknown[]

Parameters

callback

(...args) => TDefault | Promise<TDefault>

options

DeferredAsyncOptions<ThisArg, Delay> = {}

Returns

deferred/throttled function

<TResult>(...args): IPromisE<TResult>

Type Parameters

TResult

TResult = TDefault

Parameters

args

...CbArgs

Returns

IPromisE<TResult>

Example

Debounce/deferred event handler

typescript
import PromisE from '@superutils/promise'

// Input change handler
const handleChange = e => console.log(e.target.value)
// Change handler with `PromisE.deferred()`
const handleChangeDeferred = PromisE.deferredCallback(handleChange, {
  delay: 300,
  throttle: false,
})
// Simulate input change events after prespecified delays
const delays = [100, 150, 200, 550, 580, 600, 1000, 1100]
delays.forEach(timeout =>
	 setTimeout(
	   () => handleChangeDeferred({ target: { value: timeout } }),
	   timeout,
	 ),
)
// Prints:
// 200, 600, 1100