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

前端日常——防抖

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

    一、什么是防抖

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

    二、应用场景

    两个条件:

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

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

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

    三、原理

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

    四、两种版本

    防抖分为两种:

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

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

    五、代码实现

    1、非立即执行版:

    2、立即执行版:

    相关文章

      网友评论

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

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