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

yizhihongxing

下面是关于利用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中反正弦函数Math.asin()的使用简介

    Math.asin()函数是一个JavaScript中的反正弦函数,用于计算一个数(参数)的反正弦值并返回结果。其函数定义如下: Math.asin(x) 其中x为一个介于-1与1之间的数值,表示要计算其反正弦值的数。函数返回值的单位为弧度,且其取值范围为[-π/2,π/2]。 下面是两个示例,说明Math.asin()函数的使用方法: 示例一:计算一个数字…

    JavaScript 2023年5月27日
    00
  • document.getElementById为空或不是对象的解决方法

    问题背景 在web开发中,常常使用到document.getElementById()方法来获取特定的DOM元素。但有时候会因为各种原因而出现document.getElementById为空或不是对象的错误提示,让开发者很苦恼,并且无法正常运行。 问题原因 造成该错误提示的原因很多,最常见的有以下几种: 当DOM元素尚未加载进页面时尝试获取 DOM元素的I…

    JavaScript 2023年6月10日
    00
  • 一文教会你提高Javascript代码效率的技巧

    一文教会你提高JavaScript代码效率的技巧 介绍 本篇文章将会介绍一些提高JavaScript代码效率的技巧。如果您已经熟悉了JavaScript基础语法并开发过一些JavaScript应用,那么了解更多关于如何提高代码效率的方法应该是您进一步提升技能的重要步骤。 技巧一:避免不必要的循环 如果你在应用程序中使用循环语句,那么要尽可能避免在不必要的场景…

    JavaScript 2023年5月28日
    00
  • 浅析Bootstrap表格的使用

    浅析Bootstrap表格的使用 Bootstrap是一个流行的前端框架,提供了丰富的组件和样式。表格是一个必不可少的组件,本文将深入浅出地介绍Bootstrap表格的使用,包括如何创建基本表格、添加样式、排序、过滤和分页等。 创建基本表格 在Bootstrap中,我们可以使用<table>元素来创建表格。以下是一个最基本的表格结构: <t…

    JavaScript 2023年6月11日
    00
  • 2种简单的js倒计时方式

    下面是“2种简单的js倒计时方式”的完整攻略,可以帮助网页作者快速实现倒计时功能。 1. 使用setInterval函数 原理 倒计时的原理基本上是每隔一段时间执行一次代码,去减小剩余的时间,并打印出更新后的倒计时。setInterval函数可以用来每隔指定的时间执行一段代码。 实现方法 首先,需要在html代码中定义一个显示倒计时的元素,例如: <p…

    JavaScript 2023年5月27日
    00
  • javascript电商网站抢购倒计时效果实现

    让我来详细讲解一下“JavaScript电商网站抢购倒计时效果实现”的完整攻略。 一、了解倒计时的基本原理 在实现电商网站的抢购倒计时效果之前,我们需要先了解倒计时的基本原理,以便于后续的代码实现。 倒计时的基本原理是利用 JavaScript 中的定时器(setTimeout 或 setInterval)来不断地更新倒计时显示的时间,实现倒计时效果。 具体…

    JavaScript 2023年6月10日
    00
  • JS面试之对事件循环的理解

    JS面试之对事件循环的理解 事件循环是 JavaScript 事件模型的核心,对于理解 JavaScript 的异步编程至关重要。事实上,事件循环是 JavaScript 成功的关键之一。 什么是事件循环? JavaScript 是一种单线程编程语言。它有且只有一个主线程,因此只能同时执行一个任务。 事件循环是 JavaScript 异步编程的解决方案之一,…

    JavaScript 2023年5月28日
    00
  • JS散列表碰撞处理、开链法、HashTable散列示例

    JS散列表碰撞处理是指在散列表中插入元素时,如果发现插入位置已经有元素,就会出现碰撞的情况。碰撞处理的目标是保持散列表中没有重复的元素。下面将介绍两种JS散列表的碰撞处理方法:开链法和线性探测法。 开链法 开链法也被称为拉链法,是一种常用的碰撞处理技术。它的基本思想是将每个散列值的链表放置在散列表的对应位置上,如果插入时与该链表中的某个元素发生碰撞,就将新元…

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