/*** 防抖* @param fn 防抖包裹的函数* @param delay 延迟时间* @param option 配置*      @param {Boolean} immediate 是否在高频事件触发时,立即执行一次*      @param {Boolean} immediate 1.是否在高频事件结束后 2.满足延迟时间后 再执行一次事件*          若 immediate = true & trailing = false , 则高频事件触发时,立即执行一次,事件触发终止 delay 后不会再执行回调*          若 immediate = true & trailing = true , 则高频事件触发时,立即执行一次,事件触发终止 delay 后会再执行一次回调*          若 immediate = false  则高频事件触发终止 dely 毫秒后执行一次回调 , trailing 设置失效*/
export function debounce(fn,delay = 500,option = { immediate: false, trailing: false }
) {let timer = null;return function () {if (timer) {window.clearTimeout(timer);}if (!option.immediate) {timer = window.setTimeout(() => {fn.apply(this, arguments);}, delay);} else {if (!timer) {fn.apply(this, arguments);}timer = window.setTimeout(() => {timer = null;if (option.trailing) {fn.apply(this, arguments);}}, delay);}};
}

debounce 防抖函数相关推荐

  1. debounce实现 js_js 实现一个debounce防抖函数

    debounce是指当函数被触发时,如果没有到我们设定的时间,函数不会执行,如果在设定时间之前多次触发,那么计时器会被重设,直到最后一次触发后过了设定的时间,函数才会真正执行. 一般的应用场景是:in ...

  2. 防抖函数Debounce实现

    实现原理就是利用定时器,函数第一次执行时设定一个定时器,之后调用时发现已经设定过定时器就清空之前的定时器,并重新设定一个新的定时器,如果存在没有被清空的定时器,当定时器计时结束后触发函数执行. 手写一 ...

  3. debounce实现 js_javascript防抖函数debounce详解

    定义及解读 防抖函数 debounce 指的是某个函数在某段时间内,无论触发了多少次回调,都只执行最后一次.假如我们设置了一个等待时间 3 秒的函数,在这 3 秒内如果遇到函数调用请求就重新计时 3 ...

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

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

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

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

  6. 详解防抖函数(debounce)和节流函数(throttle)

    函数防抖(debounce) 函数防抖,就是指触发事件后,在 n 秒后只能执行一次,如果在 n 秒内又触发了事件,则会重新计算函数的执行时间. 简单的说,当一个动作连续触发,只执行最后一次. 列举: ...

  7. 手把手教你实现一个防抖函数(debounce)

    前言:防抖函数在日常开发中属于是一个非常非常重要的知识点.通常在一个项目的最开始构建的时候,都会在 utils文件夹下备上这样一个函数,来为以后做准备. (tips:utils 在大部分翻译软件内好像 ...

  8. windows 改变文件大小 函数_手写 bind call apply 方法 与 实现节流防抖函数

    实现 bind call apply 方法 this 是什么? this是指包含它的函数作为方法被调用时所属的对象.这句话理解起来感觉还是很拗口的,但是如果你把它拆分开来变成这三句话后就好理解一点了. ...

  9. 防抖函数:多次触发后只执行第一次或者最后一次的函数

    一. 应用场景 当前问题: 现在点击一个按钮,然后会向服务器请求一次数据.如果暴力操作,不断的点击按钮,那么就会一直向服务器请求,这样肯定不好,需要应用到防抖函数. 最终目的:多次触发只执行最后一次或 ...

最新文章

  1. C# Winform 启动和停止进程
  2. javascript中while循环、do....while与for循环的用法和区别
  3. 《oracle大型数据库系统在AIX/unix上的实战详解》讨论31: oracle、sybase 数据库的不同访问...
  4. 使用sprc097的DSP281x_usDelay.asm
  5. 140.String Compression
  6. 软件开发需要重视对异常的处理
  7. (DFS)n皇后问题
  8. CRM系统主要业务流程思维导图
  9. 返回值由hresult变为void型_java高级之泛型
  10. 爆料喽!!!开源日志库Logger的剖析分析
  11. 高端大气星级酒店展示网站静态模板
  12. 迅为IMX8MM开发板Linux系统修改默认屏幕
  13. LINUX自学-初识LINUX
  14. Power Query零基础入门(Excel2021专业加强版)
  15. 【阅读笔记】Mutual CRF-GNN for Few-shot Learning
  16. 达梦数据库更换key文件的方法
  17. 数据库Java项目:在线租房出租房屋系统(java+springboot+maven+mysql)
  18. 如何在邮件正文显示自己的简历
  19. GD32报错Feature(s) : RDI, FlashBP, FlashDL, JFlash, GDB
  20. 地震数据SEGY格式介绍及其查看分析(附示例地震数据)

热门文章

  1. 离散数学 极大元,极小元,最大元,最小元,上界,上确界,下界,下确界
  2. LinkButton的样式设置(背景图片问题)
  3. 少儿编程Scratch学习教程2--官方初学指南
  4. python做数据分析时缺失值填补、缺失值填充方法汇总
  5. pip安装命令大全(持续更新)
  6. 领跑AIoT场景落地 OFweek智慧家庭高峰论坛圆满落幕!
  7. SEO的工作内容是什么?
  8. Latex中排序的使用方法
  9. JAVA EE:1~5章选择题
  10. CentOS下配置apache虚拟主机