手撕防抖节流
面试工作常备防抖节流
一、防抖
没有使用防抖
使用了防抖
立即执行:
一步一步实现防抖函数debounce()
:
调用防抖:
1 | let count = 0 |
第一步,实现最最简单的防抖
1 | const debounce = (func, waitTime) => { |
第二步,解决this的指向问题,改变执行函数doSomeThing()
内部的指向
1 | const debounce = (func, waitTime) => { |
第三步,event指向问题
1 | const debounce = (func, waitTime) => { |
第四步,加入立即执行参数
1 | const debounce = (func, waitTime, immediate) => { |
二、节流
一步一步实现节流函数throttle()
:
调用防抖:
1 | let count = 0 |
第一步,使用时间戳,顾头不顾尾,第一次触发,最后一次不会被触发
1 | const throttle = (func, waitTime) => { |
第二步,顾尾不顾头,第一次不会触发,最后一次会触发
1 | const throttle = (func, waitTime) => { |
第三步,顾头顾尾
1 | const throttle = (func, waitTime) => { |
第四步,加入参数配置
1 | const throttle = (func, waitTime, options) => { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 WesleyBee BLOG!