vue中函数防抖和函数节流

函数防抖与函数节流(vue实例) 1.函数防抖(debounce) 函数防抖,就是指触发事件后在 n 秒内函数只能执行一次,如果在 n 秒内又触发了事件,则会重新计算函数执行时间。 简单的说,当一个动作连续触发,则只执行最后一次。 打个比方,坐公交,司机需要等最后一个人进入才能关门。每次进入一个人,司机就会多等待几秒再关门。 关门这个动作,在3秒内没人上车(重复触发)才能执行 const _.debounce = (func, wait) => { let timer; ... 阅读详情

1 介绍

函数防抖和函数节流一般是用来解决持续触发事件的问题。例如处理以下事件时:mouseover、scroll和resize。实现防抖和节流的本质是利用计时器计算事件持续触发的时间。

(1)函数防抖(debounce)

持续触发事件后n秒内函数只会执行一次,如果n秒内事件再次触发,清空计时器重新计时。

(2)函数节流J(throttle)

持续触发事件后 n 秒内函数只执行一次。

2 截图

3 Vue源码

<template>
  <div class="test">
    <div class="item" v-on:mousemove="changeNum">
      <div>数据变化</div>
      <div>{{ num }}</div>
    </div>
    <div class="item" v-on:mousemove="debounce">
      <div>防抖</div>
      <div>{{ debounceNum }}</div>
    </div>
    <div class="item" v-on:mousemove="throttle">
      <div>节流</div>
      <div>{{ throttleNum }}</div>
    </div>
  </div>
</template>

<script>
export default {
  name: "Test",
  data: function () {
    return {
      num: 1,
      debounceNum: 1,
      throttleNum: 1,

      debounceTimeout: null,
      throttleTimeout: null,
    };
  },
  methods: {
    changeNum: function () {
      this.num = this.num + 1;
    },

    // 防抖
    debounce: function (evt, delay = 1000) {
      // 清空计时器
      if (this.debounceTimeout != null) {
        clearTimeout(this.debounceTimeout);
      }

      // 计时
      this.debounceTimeout = setTimeout(() => {
        this.debounceNum = this.debounceNum + 1;
      }, delay);
    },

    // 节流
    throttle: function (evt, delay = 1000) {
      // 判断计时是否结束
      if (this.throttleTimeout != null) {
        return;
      }

      // 计时
      this.throttleTimeout = setTimeout(() => {
        this.throttleNum = this.throttleNum + 1;
        clearTimeout(this.throttleTimeout);
        this.throttleTimeout = null;
      }, delay);
    },
  },
};
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
.test {
  width: 100%;
  font-size: 30px;
}

.item {
  width: 100%;
  height: 90px;
  background-color: #cccccc;
  margin: 40px;
}
</style>

保姆级教程:用STM32CubeMX HAL库搞定ESP8266连接,附串口printf调试全流程 本文提供了一份详细的STM32CubeMX HAL库教程,指导开发者如何实现ESP8266无线模块的连接与调试。从开发环境搭建、串口配置到AT指令通信解析,涵盖了物联网开发中的关键步骤和常见问题解决方案,帮助开发者快速掌握STM32与ESP8266的集成技术。 阅读详情

相关推荐

Claude Code 实战指南:从入门到高效编程

本文是一份Claude Code实战指南,旨在帮助开发者从入门到精通这款AI编程助手。文章详细讲解了如何通过清晰的指令公式与Claude Code高效沟通,并展示了如何将其深度集成到日常开发工作流中,例如理解陌生代码、调试和生成测试文档。指南还提供了避坑建议与最佳实践,并通过构建一个天气查询CLI工具的完整案例,演示了如何利用Claude Code加速开发进程,实现从设计到代码的高效人机协作。

weixin_28339967的博客 484

【vue】防抖与节流函数

前言 防抖、节流是为了在某个事件频繁发生时,不把这个频繁的事件内的操作也这么频繁的触发; 一、防抖 1、使用场景 当我们只需要调用一个频繁事件的最后一次触发时,用防抖; 即:在频繁事件不再触发的n秒后触发一次; 比如,监听输入框做关键字搜索,当用户1秒内没有再输入时我们再去搜索,而不是一边输入一边搜索; 2、思路 频繁事件的每一次触发做两件事,先清除定时器,再创建定时器;在定时器里执行我们最终的操作; 3、代码例子 <el-input v-model="val" placehold

zhangankang的博客 765

Arduino Uno R3开发板系列学习教程(番外篇:USB驱动安装与疑难排解)

本文详细介绍了Arduino Uno R3开发板USB驱动安装与疑难排解的完整指南,特别针对国产克隆版常见的CH340驱动问题提供解决方案。从识别开发板类型到Windows/Mac系统驱动安装步骤,再到常见问题排查与高级排错技巧,帮助开发者快速解决连接问题,确保程序烧录顺利进行。

weixin_29182481的博客 583

vue 防抖函数和节流函数

export default { /** * 函数防抖 * 触发事件后在n秒后执行,如果n秒内又触发事件,则重新计算时间 */ debounce(fn, wait = 1000) { let timer; return function () { let context = this; let args = arguments; if (timer) clearTimeout(timer); timer = set.

Jana Jing的分享 2674

GT-suite v2016的下载和安装

1 写在前面 GT-suite 是一款用来做内燃机仿真的软件。在安装过程中遇到很多问题,网上的安装教程也大都抄来抄去,试着安装了几遍都没有成功。最终在贴吧一个老哥的帖子里找到了解决办法,但是老哥的帖子也不是很详细,所以做了这个详细版本的教程。 GT-suite v2016安装包: 链接:https://pan.baidu.com/s/1JZPgJ8_-J-L8rV84-eHedQ 提取码:uj...

kisssshot的博客 3万+

PTA-浙大版 《Python程序设计》 第三章编程题目及答案

博主第一次写优快云的博客,所以排版上可能有些不尽人意,代码部分均为自己的思路,可能复杂或者考虑欠妥,欢迎大家一起讨论~ 第一题:大于身高的平均值 这里用了np数组求得平均数,当然for循环累加也是可以的 import numpy as np data = input().split() data = list(map(int,data)) avg = np.mean(data) for i in data: if i > avg: print(i,end = '

Legendwqs的博客 1万+

vue中使用防抖、节流

1.什么是防抖节流 *** 函数防抖(debounce)*** 是指在一定时间内,在动作被连续频繁触发的情况下,动作只会被执行一次,也就是说当调用动作过n毫秒后,才会执行该动作,若在这n毫秒内又调用此动作则将重新计算执行时间,所以短时间内的连续动作永远只会触发一次。 函数节流(throttle) 是指一定时间内执行的操作只执行一次,也就是说即预先设定一个执行周期,当调用动作的时刻大于等于执行周期则执行该动作,然后进入下一个新周期,一个比较形象的例子是如果将水龙头拧紧直到水是以水滴的形式流出,那你会发现每隔一

weixin_44875693的博客 4974

从零开始学习CANoe(六)—— CAPL 测试节点

创建CAPL Test Module的两种方式

蚂蚁小兵 1万+

vue 频繁操作使用 防抖和节流

防抖和节流 Vue 没有内置支持防抖和节流,但可以使用Lodash等库来实现。 如果某个组件仅使用一次,可以在methods中直接应用防抖: <script src="https://unpkg.com/lodash@4.17.20/lodash.min.js"></script> <script> Vue.createApp({ methods: { // 用 Lodash 的防抖函数 click: _.debounc...

月光恋九霄的博客 934

【图像超分】论文复现:Pytorch实现SRCNN!保姆级复现教程!提供完整代码和最优权重模型(x2、x3、x4)!科研级论文曲线图!计算平均PSNR和SSIM!代码Windows和Linux都可用!

由于很多同学反应没用过jupyter notebook,更习惯用pycharm项目的形式跑代码。于是,本文将用pycharm项目的形式,重新复现SRCNN!【图像超分】论文复现:新手入门!Pytorch实现SRCNN,数据预处理、模型训练、测试、评估全流程详解,注释详细,简单修改就可以训练你自己的图像数据,有训练好的模型下载地址,随取随用。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 4703

桌面运维工程师面试题汇总(高频完整版)

岗位,覆盖:电脑硬件、系统安装与故障、网络、办公软件、安全、AD域、打印机、日常排错、服务意识。

老韩的Linux云计算架构师进阶之路 919

Vue中使用函数防抖和节流

函数防抖(Debounce):指触发事件后在n秒内函数只执行一次,如果在n秒内又触发了事件,则会重新计算函数执行时间。如:搜素框,滚动条 函数节流(throttle):指连续触发事件但在n秒中只执行一次,避免某些事件频繁触发。如:按钮点击

刘运召的博客 3924

一文掌握 Playwright 的详细使用

Playwright 是一个功能强大的浏览器自动化工具,适用于网页自动化测试、数据抓取和网页交互。通过掌握其基础用法和高级功能,你可以轻松实现各种浏览器自动化任务。Playwright 支持多浏览器、多语言,并且具有高效的异步操作能力,是现代浏览器自动化的首选工具之一。

数据知道的博客 1万+

vue正确的使用函数的防抖与节流

函数的防抖与节流是一直的面试话题。对于函数防抖与节流的写法,大家都可能比较熟悉,但是在vue中使用函数的防抖或者节流,这里是有一个小插曲的哦。 vue中的正确使用姿势 在这个地方相信好多人的使用方式,会直接定义函数,然后在函数中使用debounce的 ,这样的使用方法是错误的。 为啥呢?这个和vue的事件绑定原理有关,这里不详细介绍。如果直接在函数体内部使用的话,最后的结果是,一个匿名的立即执行函数来进行执行,这样是不对的。详细参考 原理 函数的防抖 函数的防抖是在多少时间后再来执行函数,我们.

twinkle的博客 3339

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Vue实战技巧:从零开始封装全局防抖和节流函数

Vue实战技巧:从零开始封装全局防抖和节流函数

希望看完文章的你能够带着答案离开。 5030

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Vue实现函数防抖和节流

效果: 一、在utils文件加下创建globalFunction.js文件 export default { //防抖 debounce(func, wait) { let timeout; return function () { const context = this; const args = [...arguments]; if (timeout) clearTimeout(t

Aiolimp的博客 691

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

vue2:封装全局防抖和节流函数

防抖和节流是两种常见的优化技术,用于控制事件的触发频率,以提高性能和用户体验。防抖它限制一个函数在连续触发事件后,只执行一次。当事件被触发时,防抖函数会设置一个定时器。如果在指定的时间内再次触发事件,定时器会被清除并重新设置。只有当事件停止触发一段时间后,定时器才会执行相应的函数。防抖常用于处理在用户频繁操作时的回调函数,例如在输入框输入时触发搜索操作。通过防抖,可以减少不必要的函数调用,提高性能。节流它控制函数在一段时间内的触发频率。

weixin_1095的博客 1368

在 JS 文件和 Vue 组件中使用防抖节流函数

如题,最近笔者发现如果将防抖节流函数写成工具类函数放在公共文件中进行调用的话,在一般的JS文件里调用和在Vue组件中调用是有不同的区别的。首先我们参考网上其他资料写一个防抖函数和一个节流函数: 防抖函数(debounce): function debounce(func, wait, immediate) { var timeout return function () {......

似水流年的博客 1万+

关于vue组件中使用防抖/节流函数

概念 函数防抖(debounce): 在事件被触发n秒后再执行回调函数。若在这n秒内又被触发,则重新计时。典型的案例:【输入搜索】:输入结束后n秒才进行搜索请求,n秒内又输入的内容,就重新计时。 应用场景: search搜索联想,用户在不断输入值时,用防抖来节约请求资源。 window触发resize的时候,不断的调整浏览器窗口大小会不断的触发这个事件,用防抖来让其只触发一次。 函数节流(throttle): 规定在一个单位时间内,只能触发一次函数。若这个单位时间内触发多次函数,只有一次生效。 典型的案

Unrequited66的博客 1342

【功能实现】vue节流、防抖函数封装与使用方法

函数防抖和节流,目的为优化高频率执行js代码的一种手段,js中的一些事件如浏览器的resize、scroll,鼠标的mousemove、mouseover,input输入框的keypress等事件在触发时,会不断地调用绑定在事件上的回调函数,为了防止多次调用导致前端界面压力递增,需要对这类事件进行调用次数的限制,所以出现了防抖与节流。在一定时间内控制事件的执行次数在多个相同事件仅执行最后一个事件。......

weixin_43574035的博客 1867

VUE防抖与节流的最佳解决方案——函数式组件

前言 有echarts使用经验的同学可能遇到过这样的场景,在window.onresize事件回调里触发echartsBox.resize()方法来达到重绘的目的,resize事件是连续触发的这意味着echarts实例会连续的重绘这是非常耗性能的。还有一个常见的场景在input标签的input事件里请求后端接口,input事件也是连续触发的,假设我输入了“12”就会请求两次接口参数分别是“1”和...

weixin_33905756的博客 6484

Vue中 实现函数的防抖、节流及应用场景

1. 简介 1.1 函数防抖(debounce) 定义: 在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时;(类似于 王者荣耀回城效果~~) 典型的案例 输入搜索:输入结束后n秒才进行搜索请求,n秒内又输入的内容,就重新计时。 实现原理: 函数防抖的基本思想是设置一个定时器,在指定时间间隔内运行代码时清楚上一次的定时器,并设置另一个定时器,知道函数请求停止并超过时间间隔才会执行。 使用场景: 搜索框搜索输入,最后一次输入完成后,再发送请求; 手机号、邮箱的输入验证; window 触发

明天也要努力的博客 4098

Vue的函数的节流与防抖

节流 防抖

qq_51715571的博客 888

vue3+ts封装全局节流和防抖函数

在Vue3 + TypeScript项目中,为了优化性能,经常需要使用节流和防抖函数来控制函数的执行频率。这里我们可以封装全局的节流和防抖函数,方便在整个项目中使用。

三拾的博客 2850

Vue中实现函数限流:节流和防抖

Vue中实现函数限流:节流和防抖

一起coding,一起嗨。 908

函数防抖节流的理解及在Vue中的应用

防抖和节流的目的都是为了减少不必要的计算,不浪费资源,只在适合的时候再进行触发计算。 一、函数防抖 定义 在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时;典型的案例就是输入搜索:输入结束后n秒才进行搜索请求,n秒内又输入的内容,就重新计时。 实现原理 函数防抖的基本思想是设置一个定时器,在指定时间间隔内运行代码时清楚上一次的定时器,并设置另一个定时器,...

易之晓的博客 1579
上一篇: 使用vuedraggable实现从左向右拖拽
下一篇: ElementUI中el-table合并1列单元格
MasonYyp
博客等级 码龄9年 301粉丝 297原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值