UNPKG

es-toolkit

Version:

A state-of-the-art, high-performance JavaScript utility library with a small bundle size and strong type annotations.

35 lines (34 loc) 1.15 kB
import { toNumber } from "../util/toNumber.mjs"; //#region src/compat/function/delay.ts /** * Invokes the specified function after a delay of the given number of milliseconds. * Any additional arguments are passed to the function when it is invoked. * * @param func - The function to delay. * @param wait - The number of milliseconds to delay the invocation. * @param args - The arguments to pass to the function when it is invoked. * @returns Returns the timer id. * @throws {TypeError} If the first argument is not a function. * * @example * // Example 1: Delayed function execution * const timerId = delay( * (greeting, recipient) => { * console.log(`${greeting}, ${recipient}!`); * }, * 1000, * 'Hello', * 'Alice' * ); * // => 'Hello, Alice!' will be logged after one second. * * // Example 2: Clearing the timeout before execution * clearTimeout(timerId); * // The function will not be executed because the timeout was cleared. */ function delay(func, wait, ...args) { if (typeof func !== "function") throw new TypeError("Expected a function"); return setTimeout(func, toNumber(wait) || 0, ...args); } //#endregion export { delay };