分享两种防抖代码

本文介绍了如何在 Vue.js 中实现防抖动(debounce)技术,分别展示了两种方法。第一种方法用于input元素的oninput事件,第二种方法应用在元素的mouseover事件上,通过设置定时器来延迟函数执行,确保频繁触发的事件不会立即执行,提高了性能。
摘要由CSDN通过智能技术生成
<script setup>
import { onMounted, ref } from "@vue/runtime-core";
onMounted(() => {
  let elem = document.querySelector("#elem");
  console.log(elem);
  elem.oninput = function () {
    inner();
  };
});
function fdjl() {
  var timer = null; //你平时保存的这个timer变量,其实是定时器序号,代表的是第几个定时器,而且第一次从1开始的
  return function () {
    if (timer) {
      clearTimeout(timer); //停止一次性定时器
      timer = null; //给了一个状态
    }
    timer = setTimeout(function () {
      console.log("防抖成功");
    }, 1000);
  };
}
var inner = fdjl();
<template>
  <div><input type="text" id="elem"></div>
</template>

方法一

方法二

import { onMounted, ref, reactive } from "@vue/runtime-core";
const a = ref(100);
const debounce = (fn) => {
  let timer = null;
  return function () {
    clearTimeout(timer);
    timer = setTimeout(() => {
      fn.apply(this, arguments);
    }, 2000);
  };
};
const methods = reactive({
  handleMouseover: debounce(function () {
    a.value += 100;
  }),
});
<template>
  <div>
    <h2 ref="name" @mouseover="methods.handleMouseover">250520</h2>
    {{ a }}
  </div>
</template>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值