美文网首页
防抖和节流

防抖和节流

作者: 小啊美 | 来源:发表于2022-04-28 15:10 被阅读0次
  1. 相同点:防抖和节流的作用都是在高频事件中防止函数被多次调用。
  2. 不同点:防抖函数只会在高频事件结束后n秒调用一次函数,节流函数会在高频事件触发过程中每隔n秒调用一次函数。
应用场景
  • 都是在使用高频事件来调用函数的过程时,例如:resize、scroll事件,拖拽时的mousemove事件,文字输入、自动完成的keyup事件。
封装防抖函数
  • 定义:触发高频事件后单位时间内只执行一次函数,如果指定时间内高频事件再次被触发,则重新计算时间
  • scroll事件滚动触发事件
  • 搜索框输入查询,等用户停止输入时再调用方法,减轻服务端压力
  • 表单验证
  • 按钮提交事件
  • 浏览器窗口缩放,resize(如窗口停止改变大小之后重新计算布局)等
function debounce(func, wait) {
  let timeout = null;
  return function() {
    const ctx = this;
    const args = arguments;
    if (timeout) {
      clearTimeout(timeout);
      timeout = setTimeout(() => {
        func.apply(ctx, args)
      }, wait);
    }
  }
}
节流函数
  • 定义:在单位时间内,只触发一次函数,如果单位事件内触发多次函数,只有一次生效
  • DOM元素的拖拽功能实现(mousemove)
  • 搜索联想(keyup)
  • 计算鼠标移动的距离(mousemove)
  • Canvas模拟画板功能
  • 射击游戏的mousedown/keydown事件(单位时间只能发射一颗子弹)
  • 监听滚动事件判断是否到页面底部自动加载更多
function throttle(func, wait) {
  let timeout = null;
  return function () {
    const ctx = this;
    const args = arguments;
    if (!timeout) {
      timeout = setTimeout(() => {
        timeout = null;
        func.apply(ctx, args);
      }, wait)
    }
  }
}

相关文章

  • 谈谈js中的节流和防抖函数

    关于节流和防抖,这篇文章说的很好了,深入lodash源码分析防抖和节流深入篇 | Lodash 防抖和节流是怎么实...

  • JavaScript防抖和节流

    1. 认识防抖和节流 1.1. 对防抖和节流的认识 防抖和节流的概念其实最早并不是出现在软件工程中,防抖是出现在电...

  • 前端性能优化-浅谈js防抖和节流

    浅谈js防抖和节流

  • Javascript 基础

    1、函数防抖和函数节流 【《javascript高级程序设计》里,函数节流是这里讲的函数防抖。】函数防抖: 在事件...

  • js 防抖 节流

    节流 防抖1 防抖2

  • 2019-03-27

    js的防抖和节流 据我所知防抖和节流都是为了优化作用,减轻浏览器和服务端的负担,防抖和节流俩个的英文要记住: de...

  • js的防抖和节流

    js的 防抖(debounce)和 节流(throttle ) 防抖和节流一般用于高频触发事件,属于浏览器性能优化...

  • 手写防抖和节流函数实现

    1. 认识防抖和节流函数 防抖和节流的概念其实最早并不是出现在软件工程中,防抖是出现在电子元件中,节流出现在流体流...

  • 实现防抖和节流

    一、认识防抖和节流函数 防抖和节流的概念其实最早并不是出现在软件工程中,防抖是出现在电子元件中,节流出现在流体流动...

  • 2019-04-24关于节流和防抖

    节流: 应用场景: 防抖: 应用场景: 1.节流 2.防抖

网友评论

      本文标题:防抖和节流

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