before
创建一个新函数,该函数限制给定函数 (func) 被调用的次数。
签名
typescript
function before<F extends (...args: any[]) => any>(
n: number,
func: F
): (...args: Parameters<F>) => ReturnType<F> | undefined;参数
n(number): 返回的函数在停止之前允许调用 func 的次数。- 如果
n为 0,则不会调用 ·。 - 如果
n是正整数,则func最多被调用n-1次。
- 如果
func(F): 需要应用调用限制的函数。
返回值
((...args: Parameters<F>) => ReturnType<F> | undefined): 一个新函数,该函数:
- 追踪调用次数。
- 在调用次数达到
n-1次之前调用func。 - 如果调用次数达到或超过
n,返回undefined,并停止进一步调用。
抛出异常
如果 n 不是非负整数,则抛出错误。
示例
typescript
import { before } from 'es-toolkit/function';
const beforeFn = before(3, () => {
console.log('called');
});
// 将会打印 'called'.
beforeFn();
// 将会打印 'called'.
beforeFn();
// 不会打印 anything.
beforeFn();Lodash 兼容性
从 es-toolkit/compat 中导入 before 以实现与 lodash 的完全兼容。
n为负数时不会抛出错误。- 如果
func不是一个函数,会抛出错误。 - 当调用次数达到或超过
n时,before返回func的最后结果。
typescript
import { before } from 'es-toolkit/compat';
let count = 0;
const before3 = before(3, () => {
console.log('正在增加计数...');
return ++count;
});
console.log(before3()); // 正在增加计数... => 1
console.log(before3()); // 正在增加计数... => 2
console.log(before3()); // => 2
