使用TS 编写throttle节流函数
在TypeScript中实现一个throttle函数,可以限制一段时间内函数的调用频率。以下是一个简单的实现:
type Procedure = (...args: any[]) => void;
function throttle(procedure: Procedure, wait: number): Procedure {
let timeout: NodeJS.Timeout | null = null;
return function(...args: any[]) {
if (timeout === null) {
procedure.apply(this, args);
timeout = setTimeout(() => {
timeout = null;
}, wait);
}
};
}
// 使用示例
function updateUI(): void {
console.log("更新UI");
}
const throttledUpdateUI = throttle(updateUI, 1000);
// 模拟事件触发
setInterval(() => {
throttledUpdateUI();
}, 100);
这个throttle函数返回一个新的函数,该函数在被连续快速调用时只会执行一次原始的procedure。在这个例子中,我们使用了Node.js的setTimeout
,但在浏览器环境中,你可以使用setTimeout
的Web API版本。这个实现没有考虑时间点对齐,如果需要精确地在特定时间点对齐,可以增加额外的逻辑来调整计时器。
评论已关闭