1 | function debounce(fn: Function, interval: number) { |
同理,继续思考throttle的写法
1 | function throttle(fn: Function, interval: number): Function { |
在debounce和throttle的case里,去理解闭包在拉长变量作用域的作用,timer锁在返回函数的作用域里,延长它的生命周期,如果没有闭包的情况下,timer会在debounce和throttle函数在被调用以后立即被销毁,在下一次调用的时候就没法拿到上一次的timer定时器的引用了
有了闭包,就等于可以记忆timer了,从而实现只执行最后一次和固定时间只执行一次的效果