防抖函数
当持续触发事件 一定时间内没有再触发事件 事件处理函数才会执行一次
如果设定的时间到来之前 又一次触发了事件 就重新开始延时
触发事件 一段时间内 没有触发 事件执行 肯定是定时器
(在设定的时间内 又一次触发了事件 重新开始延时 代表的就是重新开始定时器)
(那么意味着上一次还没有结束的定时器要清除掉 重新开始)
let timer
clearInterval(timer)
timer = setTimeout(function(){
},delay)
实际的应用
使用echarts时,改变浏览器宽度的时候,希望重新渲染
echarts的图像,可以使用此函数,提升性能。(虽然echarts里有自带的resize函数)
典型的案例就是输入搜索:输入结束后n秒才进行搜索请求,n秒内又输入的内容,就重新计时。
解决搜索的bug
2000
js的异步操作
2000
200
2000000000
节流函数
当持续触发事件的时候 保证一段时间内 只调用一次事件处理函数
一段时间内 只做一件事情
实际应用 表单的提交
典型的案例就是鼠标不断点击触发,规定在n秒内多次点击只有一次生效。