节流和去抖的核心其实就是限制某一个方法被频繁触发

  • 节流:间隔时间段触发一次
  • 去抖:对于一定时间段的连续的函数调用,只让其执行一次,两者有时候不需要细分,节流去抖也可以合在一起。

具体场景

节流 (throttle)

  • DOM 元素的拖拽功能实现(mousemove)
  • 射击游戏的 mousedown/keydown 事件(单位时间只能发射一颗子弹)
  • 计算鼠标移动的距离(mousemove)
  • Canvas 模拟画板功能(mousemove)
  • 搜索联想(keyup)
  • 监听滚动事件判断是否到页面底部自动加载更多:给 scroll 加了 debounce 后,只有用户停止滚动后,才会判断是否到了页面底部;如果是 throttle 的话,只要页面滚动就会间隔一段时间判断一次

防抖(debounce)

  • 每次 resize/scroll 触发统计事件
  • 文本输入的验证(连续输入文字后发送 AJAX 请求进行验证,验证一次就好)

前端锁(mutex)

前端开发很多时候也需要“锁”,例如:用户连续点击按钮会多次触发click事件、监听鼠标滚动事件、监听input框输入事件…等都会需要“锁”。

阻止连续点击事件:申明一个变量,点击时置灰提交按钮,等接口调用结束放开按钮。

<template>
<div><!-- 其他代码 --><button v-if="canSave" @click="save">提交</button><button v-else disabled>提交</button>
</div>
</template>
<script>
export default {data(){return {canSave: true,}},methods: {save(){if(!canSave){return;}this.canSave = false;// AJAX 结束后 this.canSave = true;},}
}
</script>

参考:https://blog.csdn.net/baidu_39812199/article/details/103305605

防抖(debounce)、节流(throttle)以及前端锁(mutex)相关推荐

  1. 防抖与节流方案_前端ajax优化解决方案

    伴随着前端ajax的应用场景越来越多,那就免不了一个整合的ajax优化解决方案了,自己优化太麻烦?没事,有它帮你解决:hajax 与当下比较热门的请求库 axios 和原生的 fetch相比,haja ...

  2. 探究防抖(debounce)和节流(throttle)

    本文来自我的博客,欢迎大家去GitHub上star我的博客 本文从防抖和节流出发,分析它们的特性,并拓展一种特殊的节流方式requestAnimationFrame,最后对lodash中的deboun ...

  3. 函数防抖Debounce和函数节流Throttle

    函数节流 & 函数防抖 函数节流和函数防抖 函数节流和函数防抖二者很容易被混淆起来.下面贴英文原文,建议认真阅读: Debouncing enforces that a function no ...

  4. 防抖debounce和节流throttle

    大纲 一.出现缘由 二.什么是防抖debounce和节流throttle 三.应用场景 3.1防抖 3.2节流 一.出现缘由 前端开发中,有一部分用户行为会频繁触发事件,而对于DOM操作,资源加载等耗 ...

  5. 函数防抖(debounce)和节流(throttle)在H5编辑器项目中的应用

    函数防抖(debounce)和节流(throttle)在H5编辑器项目中的应用 文章目录 函数防抖(debounce)和节流(throttle)在H5编辑器项目中的应用 1. 为什么要防抖节流 1.1 ...

  6. Java版的防抖(debounce)和节流(throttle)

    概念 防抖(debounce) 当持续触发事件时,一定时间段内没有再触发事件,事件处理函数才会执行一次,如果设定时间到来之前,又触发了事件,就重新开始延时 节流(throttle) 当持续触发事件时, ...

  7. SAP UI5和Angular的函数防抖(Debounce)和函数节流(Throttle)实现原理介绍

    这是Jerry 2021年的第 11 篇文章,也是汪子熙公众号总共第 282 篇原创文章. Jerry之前的文章 SAP UI5 OData谣言粉碎机:极短时间内发送两个Odata request, ...

  8. 函数防抖(debounce)和节流(throttle)以及lodash的debounce源码赏析

    函数节流和去抖的出现场景,一般都伴随着客户端 DOM 的事件监听.比如scroll resize等事件,这些事件在某些场景触发非常频繁. 比如,实现一个原生的拖拽功能(不能用 H5 Drag& ...

  9. throttle debounce节流防抖(uniapp)

    引用uview中的话就是 何谓节流和防抖? 节流 节流的意思是,规定时间内,只触发一次.比如我们设定500ms,在这个时间内,无论点击按钮多少次,它都只会触发一次.具体场景可以是抢购时候,由于有无数人 ...

最新文章

  1. 【深度学习入门到精通系列】进化策略 (Evolution Strategy)
  2. CheckedListBox与下拉框联动代码
  3. 如何用ant将JSP项目打成war包
  4. Python——安装Scrapy时出现各种错误
  5. 浅析Condition与等待通知机制
  6. 计算机二级地15套题答案,计算机二级第15套答案解析.docx
  7. shell php文件是否存在字符串中,shell 判断字符串是否存在数组中的实现示例
  8. 【口语语言理解】新分类!全总结!最新Awesome-SLU-Survey资源库开源!
  9. wordpress 通过域名无法访问_使用WordPress搭建自己的内容发布平台
  10. 年轻人求知欲让我想办CPU设计免费培训
  11. ARM Cortex-A53 Cache与内存的映射关系以及Cache的一致性分析
  12. mongoDB下载安装
  13. opencv 图像平滑处理(python)
  14. 雪莹软件将word转图片产生空白区域的问题解决方法
  15. android系统中wifi省电模式下的四个基本概念:TIM、DTIM、Beacon-Interval、Listen-Interval
  16. Not Adjacent Matrix、Same Differences、Arranging The Sheep
  17. CS1703 C# Multiple assemblies with equivalent xxx... and. Remove one of the duplicate references.
  18. 福布斯中国奢侈品市场调查
  19. kaggle上面的E-Commerce Data数据集练习(数据处理)
  20. 一个手机号可注册两个微信号

热门文章

  1. 函数声明时 要不要 加 extern
  2. linux实验------对磁盘进行分区格式化挂载
  3. 高通开发系列 - System之分区调整增删快速格式化和挂载等
  4. 怎么用html画图,如何用HTML5设计画图程序
  5. <fieldset> 标签
  6. EasyPlayer播放器全线开放:EasyPlayer RTSP版、RTMP版、Pro版、Windows平台、Android平台、iOS平台、H5版本
  7. 10个有用的css编辑网站
  8. NUIST LevOJ P1826 荷取的基站布局 (状态压缩dp
  9. matlab:布儒斯特角及全反射临界角
  10. 每个程序员都会遇到瓶颈期,35岁是分水岭,要么淘汰,要么自由