[Medium] 手写节流 (throttle) 函式
2024年3月8日
💎 加入 E+ 成長計畫 與超過 500+ 位軟體工程師一同在社群中成長,並且獲得更多的軟體工程學習資源
题目描述
节流 (throttle) 指的是,在一段时间(t
)内只会执行一次触发事件的回调 (callback) 函式,若在这之中又有新事件触发,则不执行此回调函式。
请实践一个节流函式 throttle
,此函式接收两个参数,第一个参数是一个回调函式 fn
,第二个参数是延迟时间 delay
,此函式遵循以上描述的行为。
本题解答
以下是本题的解答,详细解题思路可以在 E+ 成长计划看到。如果想练习更多题目,推荐可以到 GreatFrontEnd 上练习
解法
function throttle(fn, delay = 500) {
let timer = null;
return function (...args) {
if (timer) return;
timer = setTimeout(() => {
timer = null;
}, delay);
fn.apply(this, args);
};
}