写一个防抖函数和节流函数

防抖的解释:在一定时间内,多次触发,只运行最后一次,多次触发时,则会把前面执行的函数去掉,重新开始计时,直到没有触发后,执行最后一次。适用场景:input远程搜索,在输入完成后,才会进行搜索。

/**
 * 函数防抖 在一段时间内,多次执行,则会把前面执行的函数去掉,重新开始计时,直到没有触发后,执行最后一次
 */
export const Debounce = (fn, t = 500) => {
  let timeout = null
  return function() {
    if (timeout) clearTimeout(timeout)
    timeout = setTimeout(() => {
      fn.apply(this, arguments)
    }, t)
  }
}

使用

// 引入防抖函数
import { Debounce } from '@/utils/debounce'

//使用
// 搜索input标签上的change事件
    InputChange (val) {
      Debounce(
        this.searchName( val ), // 按名称查找的方法
        500
      )
    },

节流的解释:在一定时间内,只触发一次,不会引起重新计时,场景:scroll、resize

/**
* 函数节流 
*/
export const Throttle = (fn, t = 500) => {
  let canRun = true
  return function() {
    if (!canRun) return
    canRun = false
    setTimeout(() => {
      fn.apply(this.arguments)
      canRun = true
    }, t)
  }
}
//  这里是vue3的写法只
const listWrapper = Vue.ref(null);
 const scrollFn = (e) => {  };
 let fn = throttle(scrollFn)
   Vue.onMounted(() => {
       listWrapper.value.addEventListener('scroll', fn);
   });
   return {
       scrollVal
   };
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值