面试之手写防抖节流 (5)

现在我们实现了一个简单的防抖函数。有时候我们会要求函数在第一次触发立即执行,我们来为它添加个参数。

function debounce(fn, wait = 1000, immediate = false) { let timer = null; return function debounced(...args) { // 重置计时器 if (timer) clearTimeout(timer); // 首次立即执行 if (immediate && !timer) { fn.apply(this, ...args); timer = setTimeout(() => { timer = null; }, wait); return; } // 新计时器 timer = setTimeout(() => { fn.apply(this, ...args); timer = null; }, wait); }; }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsfjds.html