美文网首页
前端日常——防抖

前端日常——防抖

作者: CCCCCccccccch | 来源:发表于2019-10-22 12:17 被阅读0次

一、什么是防抖

指触发事件后在规定时间内回调函数只能执行一次,如果在规定时间内又触发了该事件,则会重新开始算规定时间。总结来说就是 延时执行。防抖的结果是频繁的触发转变为触发一次。

二、应用场景

两个条件:

1. 用户的连续操作会导致频繁的事件回调(执行的逻辑比较复杂或耗时,浏览器的处理跟不上触发,可能会发生卡顿、假死或者事件堆积)

2. 用户只关心“最后一次”操作(停止连续操作后)返回的结果

例如: 搜索框keyup、keydown,频繁改变窗口大小resize,鼠标移动mousemove,收藏点赞等触发时需要请求后台接口的操作。

三、原理

通过定时器将回调函数进行延时,如果在规定时间内继续回调,发现存在之前的定时器,则将该定时器清除,并重新设置定时器。这里有个细节,就是后面所有回调函数都要能访问到之前设置的定时器,这时就需要用到闭包。

四、两种版本

防抖分为两种:

1、非立即执行版:事件触发 ——>延时——>执行回调函数。如果在延时中,继续触发事件,则会重新进行延时,在延时结束后执行回调函数。常见的例子:input搜索框,客户输完过一会就自动搜索。

2、立即执行版:事件触发——>执行回调函数——>延时。如果在延时中,继续触发事件,则会重新进行延时。在延时结束后,并不会执行回调函数。常见例子:对于按钮防点击,例如点赞、收藏等立即有反馈的按钮。

五、代码实现

1、非立即执行版:

2、立即执行版:

相关文章

  • 前端日常——防抖

    一、什么是防抖 指触发事件后在规定时间内回调函数只能执行一次,如果在规定时间内又触发了该事件,则会重新开始算规定时...

  • 前端防抖

    前端防抖

  • 前端性能优化:手写实现节流防抖

    前端性能优化:手写实现节流防抖 本文首发于 前端性能优化:手写实现节流防抖[https://gitee.com/r...

  • 说说前端的防抖和节流以及最简单的实现

    防抖和节流在前端是很常见的知识点,并且也是常见的面试题。 00 背景 防抖和节流在前端中是应用很常见的,特别是在 ...

  • 如何理解debounce和throttle?

    前端工程师们都听过看起来很高级的词,节流和防抖,其实节流就是debounce,防抖就是throttle,其实这个也...

  • 前端 JavaScript 之『节流』的简单代码实现

    前戏 首先,总结一下上一篇文章——《前端 JavaScript 之『防抖』的简单代码实现》的内容:「防抖」就是在高...

  • 前端性能优化——防抖

    在开发中经常会遇到频繁触发的事件如onScroll,onChange等,当这些频繁触发的事件和请求相关联的时候,每...

  • 「前端学习」关于防抖

    防抖,就是指触发事件后在 n 秒内函数只能执行一次,如果在 n 秒内又触发了事件,则会重新计算函数执行时间。 节流...

  • 前端函数防抖、节流

    函数进阶 函数防抖(debounce)以最后一次为准 解决办法:延迟 n 秒执行,只执行 n 毫秒内最后一次触发,...

  • 什么是前端开发JavaScript防抖

    防抖(去抖),以及节流(分流)在日常开发中可能用的不多,但在特定场景,却十分有用。 最近有同学遇到了要做防抖的需求...

网友评论

      本文标题:前端日常——防抖

      本文链接:https://www.haomeiwen.com/subject/nttmyctx.html