JavaScript性能优化之函数节流(throttle)与函数去抖(debounce)
2018-03-21 09:11
836 查看
debounce
在 JavaScript 中,debounce 函数所做的事情就是,强制一个函数在某个连续时间段内只执行一次,哪怕它本来会被调用多次。我们希望在用户停止某个操作一段时间之后才执行相应的监听函数,而不是在用户操作的过程当中,浏览器触发多少次事件,就执行多少次监听函数。function debounce(fn, delay) {
let timer;
return () => {
clearInterval(timer);
timer = setTimeout(() => {
fn.apply(this, arguments)
}, delay)
}
}
throttle
throttle的概念理解起来更容易,就是固定函数执行的速率,即所谓的“节流”。正常情况下,mousemove的监听函数可能会每 20ms(假设)执行一次,如果设置 200ms 的“节流”,那么它就会每 200ms 执行一次。比如在 1s 的时间段内,正常的监听函数可能会执行 50(1000/20) 次,“节流” 200ms 后则会执行 5(1000/200) 次。 function throttle(fn, threshhold) {let last;
let timer;
threshhold || (threshhold = 250)
return() => {
let now = +new Date();
if(last && now < last + threshhold) {
clearInterval(timer);
timer = setTimeout(() => {
last = now;
fn.apply(this, arguments)
})
} else {
last = now;
fn.apply(this, arguments)
}
}
}
相关文章推荐
- JavaScript性能优化之函数节流(throttle)与函数去抖(debounce)
- (转)JavaScript-性能优化之函数节流(throttle)与函数去抖(debounce)
- JavaScript-性能优化,函数节流(throttle)与函数去抖(debounce)
- JavaScript-性能优化,函数节流(throttle)与函数去抖(debounce)
- javascript:函数节流(throttle)与函数去抖(debounce)
- JavaScript性能优化技巧之函数节流
- Javascript性能优化之 函数节流技术
- JavaScript 性能优化技巧:函数节流
- JavaScript 性能优化技巧:函数节流
- JavaScript性能优化技巧之函数节流
- 【 js 性能优化】【源码学习】underscore throttle 与 debounce 节流
- JavaScript性能优化技巧之函数节流
- 【javascript】滚动条事件优化->函数节流与去抖
- js性能优化之函数节流(分流函数)
- 【javascript】滚动条事件优化->函数节流与去抖
- JavaScript 节流函数 Throttle 详解
- javascript性能优化之分时函数的介绍
- [概念] js的函数节流和throttle和debounce详解
- throttle/debounce: 为你的cpu减减压(前端性能优化)
- JS魔法堂:函数节流(throttle)与函数去抖(debounce)