Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | 2x 2x 2x | import { Callback, CancelCallback } from "./_types";
/**
* Delays the invocation of a {@link Callback} function.
*
* @example
* Call `callback` after 500ms
* ```ts
* const callback = (val) => console.log(val);
* delay(callback, 500, "val");
*
* // prints "val" after 500ms
* ```
*
* @example
* Cancel delay
* ```ts
* const callback = (val) => console.log(val);
* const cancelDelay = delay(callback, 500, "val");
* cancelDelay();
*
* // will not call the callback
* ```
*
* @param callback - the {@link Callback} to call
* @param ms - the {@link number} of milliseconds to delay the function call
* @param args - the `arguments` to pass to the `callback` function
* @returns the cancel {@link Callback} function
*/
export const delay = <TArgs extends unknown[] = []>(
callback: Callback<TArgs>,
ms: number,
...args: TArgs
): CancelCallback => {
const timeout = setTimeout(callback, ms, ...args);
return () => clearTimeout(timeout);
};
|