mirror of
https://github.com/toss/es-toolkit.git
synced 2024-11-24 03:32:58 +03:00
1.7 KiB
1.7 KiB
before
Creates a new function that limits the number of times the given function (func
) can be called.
Signature
function before<F extends (...args: any[]) => any>(
n: number,
func: F
): (...args: Parameters<F>) => ReturnType<F> | undefined;
Parameters
n
(number
): The number of times the returned function is allowed to callfunc
before stopping.- If
n
is 0,func
will not be called. - If
n
is a positive integer,func
will be called up ton-1
times.
- If
func
(F
): The function to be called with the limit applied.
Returns
((...args: Parameters<F>) => ReturnType<F> | undefined
): A new function that:
- Tracks the number of calls.
- Invokes
func
until then-1
-th call. - Returns
undefined
if the number of calls reaches or exceedsn
, stopping further calls.
Error
Throws an error if n
is negative.
Example
import { before } from 'es-toolkit/function';
const beforeFn = before(3, () => {
console.log('called');
});
// Will log 'called'.
beforeFn();
// Will log 'called'.
beforeFn();
// Will not log anything.
beforeFn();
Lodash Compatibility
Import before
from es-toolkit/compat
for full compatibility with lodash.
before
does not throw an error whenn
is negative.before
throws an error iffunc
is not a function.before
returns the last result offunc
when the number of calls reaches or exceedsn
.
import { before } from 'es-toolkit/compat';
let count = 0;
const before3 = before(3, () => {
console.log('Incrementing count...');
return ++count;
});
console.log(before3()); // Incrementing count... => 1
console.log(before3()); // Incrementing count... => 2
console.log(before3()); // => 2