抖动和节流

抖动和节流

<input id="search" type="text"/>
<div id="content" style="height: 150px;line-height: 150px; text-align: center;background-color: gray;"></div>
	<script>
        let num = 1;
        function count(){
            content.innerHTML = num++
        }
        document.getElementById('search').oninput = count()
        document.getElementById('content').onmousemove = count()
	</script>

抖动

方式一:让输入完毕后过1秒再查询

function debounce(func, wait){
	let timeout;
	return function(){
		if(timeout) clearInterval(timeout)
			timeout = setTimeout(() => {
				func.apply(this)
			},wait)
	}
}

方式二:输入完毕立即查询,过2秒才能再查询

function debounce(func, wait){
	let timeout;
	return function(){
		if(timeout) clearTimeout(timeout)
		let callNow = !timeout
        timeout = setTimeout(() => {
        	timeout = null;
        },wait)
        if(callNow) func.apply(this)
	}
}

节流(固定的时间去发请求)

        // 定时器 
        function throttle(func, wait){
        	let timeout
        	return function(){
        		if(!timeout){
        			timeout = setTimeout(() => {
        				timeout = null
        				func.apply(this)
        			},wait)
        		}
        	}
        }
        // 时间戳
        function throttle(func, wait){
            let prev = 0
            return function(){
                let now = Date.now()
                if(now - prev > wait){
                    func.apply(this)
                    prev = now
                }
            }
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值