JS防抖节流函数

/**
 * 模拟请求
 * @param {Object} content
 */
function mockAjax(content) {
	setTimeout(() => {
		console.log('ajax request ', content)
	}, 500)
}
/**
 * 防抖函数 记住原则 最后一次操作后delay后才执行 
 * 		所以,当新的操作进来 就需要清空之前得操作timer
 * @param {Object} callbackFun
 * @param {Object} delay
 */
function debounce(callbackFun, delay) {
	var timer = null
	var that = this
	return (args) => {
		if (timer) {
			clearTimeout(timer)
		}
		timer = setTimeout(() => {
			callbackFun.call(that, args)
		}, delay)
	}
}

/**
 * 节流  记住两个原则就能写出来  第一个是什么是节流 需要一个执行完毕才能执行下一个
 * 		所以,只能是timer 留空才能执行
 * @param {Object} callbackFun
 * @param {Object} delay
 */
function throttle(callbackFun, delay) {
	var timer = null
	let that = this;
	return (args) => {
		if (!timer) {
			timer = setTimeout(() => {
				callbackFun.call(that, args)
				timer = null
			}, delay)
		}
	}
}

let debounceFun = debounce(mockAjax, 3000)
let throttleFun = throttle(mockAjax, 3000)

document.addEventListener('scroll', (e) => {
	// debounceFun(e)
	throttleFun(e)
})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值