发表更新2 分钟读完 (大约255个字)
函数防抖、函数节流
函数防抖/节流,就是控制函数的执行频率。
防抖
实现代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
function debounce(func, wait) { var timer = undefined; return function() { var that = this; var args = arguments; if(timer) { clearTimeout(timer); } timer = setTimeout(function() { func.call(that, ...args); }, wait) } }
|
使用场景
滚动到底部,自动获取更多信息
节流
实现代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| /** * * func立即执行,之后每wait间隔执行,最后还会执行一次 */ function throttle(func, wait) { var play = false; var copy = func; return function() { var context = this; var args = arguments; copy = func; if (!play) { if (copy) { copy.call(this, ...arguments); copy = null } play = true; let timer = setTimeout(() => { play = false; if (copy) { copy.call(this, ...arguments); } clearTimeout(timer); }, wait); } } }
|
使用场景
- input输入
结尾
本篇所有代码
本篇内容源代码
参考文章
前端面试手写题
函数的防抖和节流是个啥???