// debounce 可以理解为乘坐电梯,每次有人上电梯都会等一下,一直会delay
/**
* 空闲控制函数, fn仅执行一次
* @param fn{Function}     传入的函数
* @param delay{Number}    时间间隔
* @param options{Object}  如果想忽略开始边界上的调用则传入 {leading:false},
*                         如果想忽略结束边界上的调用则传入 {trailing:false},
* @returns {Function}     返回调用函数
*/export function debounce(fn, delay, options) {var timeoutId; var leadingExc = falseoptions = options || {}return function() {var that = this; var args = argumentsif (!leadingExc && !(options.leading === false)) {fn.apply(that, args)}leadingExc = trueif (timeoutId) {clearTimeout(timeoutId)}timeoutId = setTimeout(function() {if (!(options.trailing === false)) {fn.apply(that, args)}leadingExc = false}, delay)}
}// throttle 不会将之前的定时任务清除,只是将执行次数减少了,使之匀速/*** 频率控制函数, fn执行次数不超过 1 次/delay* @param fn{Function}     传入的函数* @param delay{Number}    时间间隔* @param options{Object}  如果想忽略开始边界上的调用则传入 {leading:false},*                         如果想忽略结束边界上的调用则传入 {trailing:false},* @returns {Function}     返回调用函数*/export function throttle(fn, delay, options) {var wait = falseoptions = options || {}return function() {var that = this; var args = argumentsif (!wait) {if (!(options.leading === false)) {fn.apply(that, args)}wait = truesetTimeout(function() {if (!(options.trailing === false)) {fn.apply(that, args)}wait = false}, delay)}}
}

有关debounce 的应用场景 https://blog.csdn.net/weixin_36878452/article/details/111526506,vue button 双击导致多次保存数据
throttle 常用来让优化滚动条滚动事件(触发非常及时,回调函数会不断被执行,节流之后会使得页面性能更好)

created() {this.onProductsScroll = throttle(this.onProductsScroll, 30, { leading: false })this.onProductsScrollLeft = throttle(this.onProductsScrollLeft, 30, { leading: false })this.$store.commit('setProductPromotion', [])this.$store.commit('setCashBackPromotion', null)this.$store.commit('setDeliveryFeeBackPromotion', null)
}

throttle debounce 原理及应用相关推荐

  1. throttle/debounce应用及原理

    文章目录 基础应用 "时间"防抖 "空间"防抖 进阶应用 throttleFirst throttleLast throttleLatest debounce ...

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

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

  3. Debounce 和 Throttle 的原理及实现

    在处理诸如 resize.scroll.mousemove 和 keydown/keyup/keypress 等事件的时候,通常我们不希望这些事件太过频繁地触发,尤其是监听程序中涉及到大量的计算或者有 ...

  4. Javascript Throttle Debounce

    Throttle 无视一定时间内所有的调用,适合在发生频度比较高的,处理比较重的时候使用. var throttle = function (func, threshold, alt) {var la ...

  5. throttle debounce节流防抖(uniapp)

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

  6. throttle debounce

    最后一个参赛者说了算 防抖的主要思想在于:我会等你到底.在某段时间内,不管你触发了多少次回调,我都只认最后一次. var debounce = function(idle, action){var l ...

  7. 节流函数(throttle)的原理

    throttle节流函数,就是一个函数调用的频率控制器: var safe = true; function throttle() {if (safe) {lazyLoad();safe = fals ...

  8. debounce throttle

    debounce 原理 监听一个输入框,文字变化后触发change事件,如果直接用keyup事件,则会频繁触发change事件 防抖:用户输入结束或暂停的时候,才会触发change事件 应用场景: s ...

  9. java实现debounce_利用throttle和debounce实现延迟请求

    当你在前端点击一个搜索往后面发送请求的时候会触发一个像后端的请求,当你不在前端做一些控制的时候,就会发现会发送特别多的请求 比如一个人员搜索,虽然前端控制了当搜索字符大于3个字的时候才发送,但是后续还 ...

最新文章

  1. 有必要总结一下:matlab图像灰度调整——imadjust函数的使用
  2. Failed to load module script: The server responded with a non-JavaScript MIME type of “text/plain“.
  3. Spring中集成ActiveRecordPlugin数据操作插件
  4. C#中构造函数的作用
  5. linux getty命令 开启 初始化 设置 终端 简介
  6. 腾讯云张贤国:北大将我从少年变成了技术研究者
  7. tf调不到keras怎么 回事_格力变频空调快速维修方法及技巧 空调压缩机不到一分钟就停,怎么回事?...
  8. mysql8.0递归_mysql8.0版本递归查询
  9. mysql 数据库中数据去重,oracle数据库中如何达到像mysql数据库中group by 那种去重的效果..求大神解答...
  10. 使用NUnit和Moq测试ASP.NET Core MVC应用程序
  11. vue中引用swiper轮播插件
  12. php创建mysql分区_创建mysql表分区的方法_MySQL
  13. 163 镜像源 linux,网易163的Ubuntu apt镜像源
  14. 在龙芯3A3000上安装Gentoo
  15. 从今天起,我决定去掉cnzz统计
  16. ssm基于微信小程序的物流仓储系统vue
  17. 《长安十二时辰》教了哪些算法知识?
  18. pigx框架费用_【开源项目】一篇文章搞掂:Pig微服务框架
  19. 笔记本电脑无法连上WiFi的解决办法
  20. 我的世界中国版服务器最新版本,中国版Minecraft更新慢,老玩家喜欢玩国际版,只要是MC都好玩...

热门文章

  1. 面试官:聊聊对Vue.js框架的理解
  2. xunsearch php实例,xunsearch系列(二)使用篇
  3. Mac电脑使用:正确安装nvm的方法(非常详细)
  4. Docker下Redis Cluster分片集群的搭建、基本操作、集群扩容和集群故障转移(非关系型数据库技术课程 第九周)
  5. 【Unity,C#】控制方向光模拟昼夜变化的脚本
  6. mysql timestamp year_MySQL 的日期类型有5个,分别是: date、time、year、datetime、timestamp。...
  7. OV2640摄像头寄存器接口调试代码设计
  8. 企业内网H3C华三AC配置802.1x认证方案
  9. 在线作图丨数据降维方法②——主坐标分析PCoA
  10. 华为智慧屏鸿蒙实锤安卓,首款华为旗舰机已确认!鸿蒙操作界面被实锤?却惨遭质疑披皮安卓...