• 时间节流和防抖


      事件的防抖和节流主要是为了避免用户的重复操作引起浏览器的反复的回流和重绘。

    防抖

      所谓防抖就是,触发事件后,把触发非常频繁的时间合并成一次去执行。比如,在指定的时间内只执行一次回调函数,如果在指定的时间内又触发了该事件,则回调函数的执行时间会基于此刻重新开始计算。

      实现方式:

        var timer;

        btnDom.onclick = () => {

          timer && clearTimeout(timer)

          timer = serTimeout(() => {

            console.log('123')

          })

        }

        或者

        function deboun (delayTime) {

          var timer

          return () => {

            timer && clearTimeout(timer)

            timer = setTimeout(() => {

              console.log('123')

            }, arguments[0])

          }

        }

        btnDom.onclick = deboun(3000)

        实现的核心原理就是通过定义一个setTimeout的延时功能,在一定的时间内,如果我们多次的去触发这个事件,那么我们就先清除之前定义的延时器,然后重新去定义这个延时器;

    节流

      所谓的节流就是,频繁触发事件时,只会在指定的时间段内执行时间的回调,也就是说触发事件间隔大于等于指定时间才会执行回调函数。

      实现方式:

        function fn (delayTime) {

          var _start = Date.now()

          return () => {

            var currentTime = Date.now()

            var lockTime = arguments [0] - (currentTime - _start)

            if (lockTime <= 0) {

              console.log('开始执行')

            } else {

              console.log('稍后执行')

            }

          }

        }

        节流的实现方式也是利用 setTimeout 来实现,在一定的时间段内去执行某个方法,但是这种方式现在的应用场景很少,用的最多的还是事件的防抖,特别是涉及到购物和付账的业务,以及比如优惠券等等,在与后端交互的时候,用的比较多

     

  • 相关阅读:
    Linux磁盘空间释放问题
    Linux终端复用神器-Tmux使用梳理
    Linux下路由配置梳理
    Gitlab利用Webhook实现Push代码后的jenkins自动构建
    Tomcat 内存溢出 "OutOfMemoryError" 问题总结 (JVM参数说明)
    Centos下SVN环境部署记录
    Docker格式化输出命令:"docker inspect --format" 学习笔记
    ngx_pagespeed-nginx前端优化模块介绍
    git pull 总要求输入账号和密码解决?
    Android Studio之BuildConfig类
  • 原文地址:https://www.cnblogs.com/mufc/p/10647050.html
Copyright © 2020-2023  润新知