java接口防抖_面试经常会被问到的节流和防抖,一分钟理解

作者:git小米粥

出自:CSDN

一,防抖

1、定义和原理定义:防抖,即如果短时间内大量触发同一事件,都会重置计时器,等到事件不触发了,再等待规定的事件,才会执行函数。(举个简单的例子,就是如果你在我这篇博文疯狂点赞再取消赞,这个过程都会把计时器清空,等到你点累了不点了,等待0.5秒,才会触发函数,把你最终结果传给服务器。)而这整个过程就触发了一次点赞函数到服务器。原理:设置一个定时器,设置在规定的时间后触发事件处理,每次触发事件都会重置计时器。

2、用处

防抖用于搜索框和滚动的监听事件处理,如果没有防抖,那么每输入一个字或者滚动屏幕,都会触发事件,甚至一秒钟触发几十次,性能就会浪费。

function debounce(fn, delay = 500) {

let timer = null

return function () {

if (timer) {

clearTimeout(timer)//如果timer有定义,清空

}

timer = setTimeout(() => {

fn.apply(this, arguments)

timer = null

}, delay)

}

}

二、节流

1、定义和原理定义:每隔一段时间就执行一次。

原理:设置一个定时器,设置0.5秒后执行事件,如果时间到了,就会执行函数并重置定时器,等待下一个0.5秒后再执行。

2、用处

滚动栏的位置查询,就能设置每0.5秒执行一次函数。

function throttle(fn, delay = 100) {

let timer = null

return function () {

if (timer) {

return

}

timer = setTimeout(() => {

fn.apply(this, arguments)

timer = null

}, delay)

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值