防抖与节流

  • 防抖与节流

  • // 防抖 一个函数多次触发只执行最后一次
    // 使用场景 输入框搜索提示
    function fangdou(fn, delay = 500){
        let timer = null
        return function(...args){
            if(timer){
                clearTimeout(timer)
            }
           timer = setTimeout(() => {
                fn.apply(this, args)
                timer = null
            }, delay)
        }
    }
    
    let fn = fangdou((a,b) => {console.log( a + b)})
    fn(1, 2); fn(1, 3); fn(1, 4)  // 5
    
  • // 节流 一个函数多次触发 一段时间内只执行一次
    // 使用场景 抢购(限时抢购每人一次)
    function jieliu(fn, delay = 500){
    	let timer = null
    	return function(...args){
    		if(timer){
    			return 
    		}
    		timer = setTimeout(() => {
    			fn.apply(this, args)
    		}, delay)
    	}
    }
    let fn1 = jieliu((a, b) => console.log(a + b))
    fn1(1, 2); fn1(1, 3); fn1(1, 4) // 3
    
  • arguments 是一个对应于传递给函数的参数的类数组对象。

  • arguments对象是所有(非箭头)函数中都可用的局部变量

  • 建议使用剩余参数…args

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值