防抖节流

108 阅读1分钟

防抖:

核心: 设置延时器,短时间高频率触发只有最后一次触发成功

解释: 比如点击提交后,设置一个定时器,间隔1s再发送请求,如果 1s内多次请求,则清除定时器,1s后重新发送请求。也就是说,在1s内无论点击提交多少次,最后一次总是会清除上一次的延迟,继而进行自身请求。

无论你如何乱点,也只有你停止点击的最后一次会请求成功。

缺点: 响应时间太久。

节流:

核心: 设置状态锁,短时间高频率触发只有第一次触发成功

解释: 节流就是设置状态锁,比如设置一个key作为状态锁,锁一开始是关闭的,即key值设置为false。当你点击时,会对key进行判断,如果key为false,未上锁,那么开始发起请求,并且给key上锁,即设置key为true。如果你继续点击,则对key进行判断,发现key上锁了,则不发起请求,点击无效。当请求完成后,key设置为false,则可以发送新一轮请求了。

防抖和节流区别:

函数节流不管事件触发有多频繁,都会保证在规定时间内一定会真正执行一次事件处理函数,而函数防抖只是在最后一次触发后才会执行。 www.coonote.com/javascript-…

methods: {
query(){
//防抖
clearTimeout(this.timeid) 
//清除上一次定时器
this.timeid = setTimeout(()=>{ 
},500) },
move(){ 
//节流
//假如在鼠标移动时执行打印 if(this.isSearch){ 
//可以设置一个条件 isSearch为true console.log('asdfasdf')
this.isSearch = false } } },
mounted(){
//节流 当1000后才为true
setInterval(()=>{
this.isSearch = true },1000) },