JS防抖和节流实例解析

JS防抖和节流实例解析

什么是防抖和节流?

在介绍防抖和节流实例前,我们先了解一下这两个概念。防抖和节流都是为了解决高频触发某个函数而导致资源占用过多的问题。

防抖:指触发事件后在n秒内函数只执行一次,如果n秒内再次触发事件,则会重新计算函数的执行时间。

节流:指连续触发事件但是在n秒内只执行一次函数,所以节流会稀释函数的执行频率。

防抖的例子

搜索框实时搜索

当用户输入关键字进行搜索的时候,每输入一个字母都会向服务器发送一次请求,如果输入速度很快,那么就会频繁的对服务器进行请求。这时候我们可以使用防抖函数来控制搜索请求的频率。

function debounce(fn, delay) {
  let timer = null;
  return function() {
    const context = this;
    const args = arguments;
    clearTimeout(timer);
    timer = setTimeout(function () {
      fn.apply(context, args);
    }, delay);
  };
}

// debounce调用
input.addEventListener('input', debounce(function() {
  // 搜索请求
}, 500));

上面的代码中,debounce函数实现了防抖的逻辑,当用户输入时,debounce会在500ms内不再有输入再进行搜索请求。

节流的例子

滚动加载数据

当用户滚动页面到底部时,会触发加载数据的事件,如果没有节流操作,那么会出现用户连续滚动,数据不断加载的情况。

function throttle(fn, delay) {
  let timer = null;
  let start = new Date().getTime();
  return function() {
    const end = new Date().getTime();
    const context = this;
    const args = arguments;
    if (timer) clearTimeout(timer);
    if (end - start >= delay) {
      fn.apply(context, args);
      start = end;
    } else {
      timer = setTimeout(function () {
        fn.apply(context, args);
      }, delay);
    }
  };
}

// throttle调用
window.addEventListener('scroll', throttle(function() {
  // 加载数据操作
}, 500));

上面的代码中,throttle函数实现了节流的逻辑,当用户滚动到底部时,throttle会在500ms内只加载一次数据。

结论

防抖和节流都是为了解决高频触发某个函数而导致资源占用过多的问题。在实际应用中,防抖可以用来控制高频触发的事件,比如搜索框实时搜索;节流可以用来控制某些连续触发的事件,比如滚动加载数据。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS防抖和节流实例解析 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • 学好js,这些js函数概念一定要知道【推荐】

    学好 JS,这些 JS 函数概念一定要知道 Javascript 是一种弱类型的编程语言,是前端工程师必备的技能之一。学好JS的过程中,我们需要熟练掌握一些重要的函数概念,本篇文章就为大家介绍这些概念并提供实例说明。 纯函数 纯函数是指输入确定时,输出也是确定的函数,并且不会对其它变量产生影响。 例如,下面这个函数就是一个纯函数: function add(…

    JavaScript 2023年5月27日
    00
  • javascript贪吃蛇完整版(源码)

    JavaScript贪吃蛇完整版(源码)攻略 一、简介 本项目是一个使用JavaScript实现的贪吃蛇游戏,包含了完整的源代码。该游戏采用Canvas进行绘制,并具有基本的操作功能,包括开始、暂停、重新开始等。本项目适合JavaScript初学者学习。 二、源码文件结构 本项目的源码文件主要分为HTML、CSS和JavaScript三个部分。具体文件结构如…

    JavaScript 2023年6月11日
    00
  • 详解JavaScript逻辑And运算符

    详解JavaScript逻辑And运算符 什么是And运算符? And运算符,也叫逻辑与运算符,是JavaScript中的一种逻辑运算符。当两个操作数都为真(truthy)时,And运算符返回真;否则返回假(false)。 And运算符的使用 语法格式为: expression1 && expression2 其中,expression1和e…

    JavaScript 2023年5月28日
    00
  • JS正则表达式比较常见用法

    接下来我来为大家详细讲解JS正则表达式比较常见用法的完整攻略。 什么是正则表达式? 正则表达式是一种在字符串中匹配模式的方式。在JS编程中,我们可以使用正则表达式来实现字符串的搜索、替换以及分隔等操作。JS中的正则表达式都是一个对象,我们可以通过RegExp类来创建。 如何创建正则表达式 有两种方式创建正则表达式,分别为使用字面量和使用构造函数: 使用字面量…

    JavaScript 2023年6月11日
    00
  • js校验开始时间和结束时间

    JS校验开始时间和结束时间需要以下步骤: HTML结构:首先,我们需要在HTML代码中定义开始时间和结束时间的输入框,HTML的代码如下: <label for="date-start">开始时间:</label> <input type="date" id="date-star…

    JavaScript 2023年5月27日
    00
  • layui表格数据复选框回显设置方法

    以下是关于“layui表格数据复选框回显设置方法”的详细攻略。 标题 一、背景介绍 在实际开发中,我们经常会使用到Layui表格组件,而其中一个常见的问题就是如何设置数据复选框的回显状态。本文将会介绍如何使用Layui的内置函数和自定义函数来实现该功能。 二、使用内置函数进行复选框回显设置 Layui表格组件内置了checkStatus函数,该函数可以获取已…

    JavaScript 2023年6月10日
    00
  • js防止页面被iframe调用的方法

    JS防止页面被iframe调用的方法是一种常用的前端安全技术。当我们的页面被一些不安全的第三方网站运用iframe引入时,会存在一定的安全问题,比如我们网站中的用户信息可能会被第三方页面获取等。因此,我们需要采取相应的安全措施,防止我们的页面被嵌入到非法站点中,这里给出两种常用方式供参考: 方式一:判断当前页面是否在iframe中 if (self !== …

    JavaScript 2023年6月11日
    00
  • Babylon使用麦克风并处理常见问题解决

    Babylon使用麦克风并处理常见问题解决 使用麦克风是开发语音交互应用程序的基础。Babylon.js提供了一个简单的方法来捕获麦克风的输入,并将其发回服务器处理。本攻略将详细介绍如何在Babylon.js中使用麦克风,并处理常见问题。 检查浏览器支持 在使用麦克风之前,需要先检查浏览器是否支持WebRTC技术。WebRTC简单来说就是一个专为Web浏览器…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部