防抖

在不断的操作中(键盘输入,点击,窗口resize等)最终只执行一次的一种提高性能的方法 (setTimeout,clearTimeout)

代码实现:

1
2
3
4
5
6
7
8
9
10
11
function debounce(fun,time){
let timer = null

return function(){
clearTimeouot(timer)
let args = arguments
timer = setTimeout(()=>{
fun.apply(this,args)
},time)
}
}

节流

在不断的高频操作中(鼠标滚动加载等),只能在规定的时间内执行一次的一种提高性能的方法

代码实现:

1
2
3
4
5
6
7
8
9
10
function throttle(fun,time){
let start = (new Date().getTime())/1000 // 初始时间
return function(){
let end = (new Date().getTime())/1000 // 结束时间
if(end- start>time){
fun.apply(this,arguments)
start = end
}
}
}