跳到主要内容

2676.节流

链接:2676.节流
难度:Medium
标签:
简介:现给定一个函数 fn 和一个以毫秒为单位的时间 t ,请你返回该函数的 节流 版本。

题解 1 - typescript

  • 编辑时间:2023-05-16
  • 执行用时:76ms
  • 内存消耗:42.4MB
  • 编程语言:typescript
  • 解法介绍:闭包存储状态,利用setTimeout恢复状态。
type F = (...args: any[]) => void;
function throttle(fn: F, t: number): F {
// 如果有需要调用但未调用的情况,储存参数
let callArgs: any[] | null = null;
// 记录当前状态是否已经掉用过
let called = false;
return function call(...args) {
if (called) callArgs = args;
else {
fn(...args);
called = true;
setTimeout(() => {
// 恢复调用状态
called = false;
if (callArgs) call(...callArgs), (callArgs = null);
}, t);
}
};
}