利用JavaScript实现防抖节流函数的示例代码

下面是关于利用JavaScript实现防抖和节流函数的完整攻略。

什么是防抖和节流?

在讲解防抖和节流函数具体实现之前,先简单介绍一下它们的概念。

防抖

防抖是指在事件被触发n秒后再执行回调函数,如果在这n秒内又被触发,则重新计时。通俗地讲,就是在用户不断操作的情况下,只有在用户最后一次操作完毕后一定时间内才会触发事件。

节流

节流是指在一定时间间隔内只执行一次回调函数。通俗地讲,就是在用户不断操作的情况下,如果触发的频率大于一定限定值,就会被忽略掉,只有在限定时间的间隔内,第一次触发会执行一次回调函数,之后如果触发的频率还没有达到限定值则也会被忽略。

防抖函数实现

利用 JavaScript 实现防抖函数的思路很简单,即设置一个计时器,当用户触发事件时,如果计时器存在,则清除计时器并重新计时;如果计时器不存在,则说明需要首次执行回调函数。下面是一个简单的防抖示例代码:

function debounce(func, wait) {
  let timer = null;
  return function() {
    let context = this;
    let args = arguments;
    if (timer) clearTimeout(timer);
    timer = setTimeout(function() {
      func.apply(context, args);
    }, wait);
  }
}

其中,func 为需要执行的函数,wait 为一个计时器延迟的时间(以毫秒为单位)。

使用该防抖函数的示例代码如下:

const btn = document.querySelector('#btn');
btn.addEventListener('click', debounce(handleClick, 1000));

function handleClick() {
  console.log('按钮被点击了');
}

上面的示例代码中,会在按钮被点击后的1秒钟内如果没有其他的点击事件,就会触发 handleClick 函数。

节流函数实现

利用 JavaScript 实现节流函数的思路也很简单,即使用一个标记变量来判断是否已经执行了回调函数,在一定的时间间隔内,只有第一次触发事件时,才会执行回调函数,之后忽略后续的事件触发。下面是一个简单的节流示例代码:

function throttle(func, wait) {
  let canRun = true;
  return function() {
    let context = this;
    let args = arguments;
    if (!canRun) return;
    canRun = false;
    setTimeout(function() {
      func.apply(context, args);
      canRun = true;
    }, wait);
  }
}

其中,func 为需要执行的函数,wait 为一个时间间隔(以毫秒为单位)。

使用该节流函数的示例代码如下:

const btn = document.querySelector('#btn');
btn.addEventListener('click', throttle(handleClick, 1000));

function handleClick() {
  console.log('按钮被点击了');
}

上面的示例代码中,会在按钮被点击后的1秒钟内,只有第一次点击会触发 handleClick 函数,之后的事件触发都会被忽略掉。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:利用JavaScript实现防抖节流函数的示例代码 - Python技术站

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

相关文章

  • JavaScript面向对象的两种书写方法以及差别

    JavaScript是一种面向对象的编程语言,在JavaScript中,我们可以使用两种方法来定义对象和类。这两种方法分别是原型(Prototype)和类(Class)。它们有着不同的语法,但都有着相同的功能,即定义和创建对象。 原型(Prototype)方法 原型(Prototype)是JavaScript中的一个重要概念,它给JavaScript提供了一…

    JavaScript 2023年5月27日
    00
  • javascript 当前日期转化为中文的实现代码

    要将当前日期转化为中文,我们需要使用 JavaScript 的 Date 对象来获取当前日期。然后,我们可以将日期和月份数字转化为中文字符,最后组合起来生成中文日期。下面是实现该功能的完整代码攻略: 步骤一:获取当前日期 使用 JavaScript 的 Date 对象,我们可以获取当前日期的年、月、日: const date = new Date(); co…

    JavaScript 2023年5月27日
    00
  • js获取url传值的方法

    获取URL中传递的参数是JavaScript中常用的一个功能,以下是一些常见的方法: 1.使用location对象的search属性 URL中的查询参数可以通过location对象的search属性获得。该属性返回包含问号(?)的参数串,例如: console.log(location.search); // 输出 ?id=123&name=John…

    JavaScript 2023年6月10日
    00
  • ASP.NET入门随想之检票的老太太

    ASP.NET入门随想之检票的老太太 检票的需求 假设我们有一个旅游景点,景点内有一个门口,游客需要向门口处的老太太出示购票凭证,才能被允许进入景区。我们需要一个简单的系统,记录每位游客的购票情况并实时更新,向老太太提供明确的验证结果。 解决方案 基于上述的需求,我们可以使用ASP.NET框架来开发一个Web应用程序,并利用ASP.NET的强大功能来实现检票…

    JavaScript 2023年6月11日
    00
  • js中toString()和String()区别详解

    下面是详细的攻略: 标题 1. JS中toString()方法 在JS中,每个基本数据类型都内置了一个toString()方法。这个方法可以把当前对象转换为一个字符串形式,然后返回结果。toString()方法通常不需要传入参数,但是可以接受一个表示基数的参数,用于指定输出数字的基数。 2. String()函数 String()函数是JS中的一个函数,在没…

    JavaScript 2023年5月28日
    00
  • js定时器实现倒计时效果

    下面我会详细讲解如何使用JavaScript定时器实现倒计时效果,共包含以下几个步骤: 在HTML文件中创建页面元素,用于展示倒计时结果。 编写JavaScript代码,实现倒计时逻辑和定时器的使用。 针对不同场景,可以使用不同类型的定时器实现倒计时效果。 接下来,我们详细说明每个步骤。 第一步:创建页面元素 首先,我们需要在HTML文件中创建一个用于展示倒…

    JavaScript 2023年6月11日
    00
  • React组件化的一些额外知识点补充

    当使用 React 进行开发时,组件是其最核心的元素。React 的组件化使得代码的管理变得更加容易,部件所需的功能通过 props 和 state 在组件层次结构中传递。但作为一个前端开发者,你还需要了解React 组件化的一些额外知识点,才能更洽肤的开发React应用。 一、PropTypes 组件可以是其他组件的子组件,父组件通常需要向子组件传递 pr…

    JavaScript 2023年6月10日
    00
  • JavaScript中Form表单技术汇总(推荐)

    JavaScript中Form表单技术汇总(推荐)是一篇介绍JavaScript中与表单相关的技术的文章,包含了许多实用的技巧和示例。以下是对这篇文章的详细解读: 概述 该文章主要介绍了JavaScript中的表单技术,涉及到表单的验证、提交、动态创建表单等等。读者可以通过学习这篇文章来了解JavaScript中表单相关的技术,从而提升自己的开发能力。 表单…

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