es-next-tools
Version:
A comprehensive utility library for JavaScript and TypeScript that provides a wide range of functions for common programming tasks, including mathematical operations, date manipulations, array and object handling, string utilities, and more.
22 lines (21 loc) • 692 B
JavaScript
/**
* Creates a function that invokes the original function only before it's called n times.
* @param {number} times - The number of calls before the original function stops being invoked.
* @param {Function} fn - The function to restrict.
* @returns {Function} The new restricted function.
* @example
* let count = 0;
* const incrementBeforeThree = before(() => ++count, 3);
* incrementBeforeThree(); // 1
* incrementBeforeThree(); // 2
* incrementBeforeThree(); // 2 (doesn't increment anymore)
*/
export function before(fn, times) {
let count = 0;
return ((...args) => {
if (count < times) {
count++;
return fn(args);
}
});
}