函数防抖和节流归纳

函数防抖和节流概念

常用节流,提交按钮的防重点;常用防抖,input框对输入内容的自动联想
在Lodash这个强大的JS工具库里面也有函数防抖函数节流,可以直接通过lodash引入方法

防抖(debounce)

概念:在事件被触发n秒后再执行回调函数,如果在这n秒内又被触发,则重新计时。
应用:以百度输入框例,比如你要查询XXx,想实现输完了XXx之后,再进行搜索请求,这样可以有效减少请求次数,节约请求资源。

节流(throttle)

概念:连续执行函数,每隔一定时间执行函数。规定一个单位时间,在这个单位时间内,只能有一次触发事件的回调函数执行,如果在同一个单位时间内某事件被触发多次,只有一次能生效。
应用:鼠标连续多次click事件,mousemove 事件,拨打电话,监听滚动事件,比如是否滑到底部自动加载更多等等…

函数代码

防抖(定时器):
// 第一次触发需要等待wait,延迟结束后调用
(Select搜索框内容发生变化)
(在输入框输入内容完成400毫秒后才会请求,在操作完成后等待一段时间执行)
/**
*description :防抖
*@params {function} fn 执行函数
*@params {number} wait 时间
*/
function debounce(fn, wait = 400) {
	let timer = null
	return function(){
		if(timer) clearTimeOut(timer)
		timer = setTimeOut(()=>{
		fn.apply(this, arguments)
		timer = null
		},wait)
	}
}

节流(时间戳):
// 第一次触发时不需要等待wait,延迟开始前调用
(Select滚动条滚动)
(在400毫秒内一直触发,等400毫秒才执行函数
一直触发,会每隔固定的时间触发一次函数)
function throttle(fn, wait = 400){
	let _lastTime = null
	return function(){
		let _nowTime = +new Date()
		if(_nowTime - _lastTime > wait || !_lastTime ) {
		fn.apply(this, arguments)
		_lastTime = _nowTime 
		}
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值