zoukankan      html  css  js  c++  java
  • 函数防抖和函数节流

    一:函数防抖

    概念:在事件被触发n秒后再执行,如果在这n秒内又被触发,则重新计时。

              可以用第三方包lodash来处理

    npm i lodash  

    lodash 会在全局提供一个成员:_

    对象中有很多方法,其中有一个方法专门用于处理函数防抖
    方法名:debounce
    作用:函数防抖
    使用方式:

    const newFn = _.debounce(fn, 1000);

    我们可以使用函数防抖把一个正常的函数变得不正常
    两个参数:
    参数1:函数
    参数2:时间,单位是毫秒
    返回值:函数
    返回值函数的功能和 fn 和的功能是一样
    唯一的区别就是经过了防抖处理

    二:函数节流

    概念: 规定一个单位时间,在这个单位时间内,只能有一次触发事件的回调函数执行,如果在同一个单位时间内某事件被触发多次,只有一次能生效。

    // 参数1:函数
    // 参数2:间隔时间
    // 返回值:函数(它的功能和保证的 fn 的功能是一样的,但是被进行了节流处理)
    // 第1次直接调用,之后的按照一定频率进行调用
    const newFn = _.throttle(fn, 2000);
    
    // newFn()
    // newFn()
    
    setInterval(() => {
      console.log("鼠标点击");
      newFn();
    }, 200);

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    对二者有以下区别

    • 函数防抖和函数节流都是防止某一时间频繁触发,但是这两兄弟之间的特性却不一样。

      • search 搜索联想,用户在不断输入值时,用防抖来节约请求资源。

      • window 触发 resize 的时候,不断的调整浏览器窗口大小会不断的触发这个事件,用防抖来让其只触发一次

    • 函数防抖是某一段时间内只执行一次,而函数节流是间隔时间执行。

      • 鼠标不断点击触发,mousedown (单位时间内只触发一次)

      • 监听滚动事件,比如是否滑到底部自动加载更多,用 throttle 来判断

  • 相关阅读:
    最少换乘
    hdu5441 Travel
    hdu 5444 Elven Postman(水)
    hdu5443 The Water Problem(水)
    hdu5438 Ponds
    poj 3281
    Light OJ
    2016中国大学生程序设计竞赛
    2016中国大学生程序设计竞赛
    UVA 10200 Prime Time (打表)
  • 原文地址:https://www.cnblogs.com/wsm777/p/13864222.html
Copyright © 2011-2022 走看看