JavaScript函数节流的两种写法

JavaScript函数节流的概念是指限制事件触发的频率。例如,我们可以设置函数在一定时间内只能触发一次,这可以在处理一些高频事件时提高页面性能。

在JavaScript实现函数节流的时候,一般有两种常用的写法,下面将会分别进行介绍。

时间戳实现

时间戳实现是通过记录上一次执行的时间,和当前时间进行比较,如果时间差大于设定的时间阈值,就执行函数,否则就不执行。下面是一个示例说明:

function throttle(func, wait) {
    let previous = 0;
    return function() {
        let current = Date.now();
        if(current - previous > wait) {
            func.apply(this, arguments);
            previous = current;
        }
    }
}

function handle() {
    console.log('我被执行了');
}

window.addEventListener('resize', throttle(handle, 300));

这段代码通过使用闭包记录了previous变量来记录上一次函数执行的时间,如果当前时间与上一次执行函数的时间差大于wait时长,就执行函数,为了确保this指向正确,调用apply方法并传入thisarguments参数。

定时器实现

定时器实现是表示当高频事件触发时,函数不会立即执行,而是在一定时间后执行,如果在这个时间内再次触发了函数,就会重新计算延迟时间,以达到节流的效果。下面是一个示例说明:

function throttle(func, wait) {
    let timeout;
    return function() {
        if(!timeout) {
            timeout = setTimeout(() => {
                timeout = null;
                func.apply(this, arguments);
            }, wait);
        }
    }
}

function handle() {
    console.log('我被执行了');
}

window.addEventListener('resize', throttle(handle, 300));

这段代码通过将定时器ID保存在timeout变量中,只有当变量为空时才设置定时器,在函数最后清空定时器并执行。如果在等待时间内再次通知触发了throttle函数,就会取消之前创建的定时器,并重新创建一个定时器。

以上是两种JavaScript函数节流的常用实现方法,开发者可以根据实际需求选取不同的方法,以达到更好的节流效果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript函数节流的两种写法 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • javascript中this的四种用法

    当我们使用JavaScript进行编程时,经常会使用到this关键字。this的含义在不同的情况下有不同的用法。下面将详细讲解Javascript中this的四种用法。 1. 默认绑定 默认绑定是指当我们调用一个函数时,如果该函数中使用了this,而且该函数没有使用任何上下文绑定的方法,那么this的值就是全局对象(在浏览器中就是window对象)。 以下是…

    JavaScript 2023年5月18日
    00
  • javascript实时显示北京时间的方法

    实时显示北京时间可以用JavaScript来实现,具体实现方法有多种,下面我将分享两种常用方法,分别是: 第一种方法:使用Date对象实现实时更新北京时间 在HTML文件中通过<script>标签引入JavaScript代码,如下: <!DOCTYPE html> <html> <head> <title…

    JavaScript 2023年5月27日
    00
  • 最全的常用正则表达式大全

    非常感谢您对本站内容的关注。下面是“最全的常用正则表达式大全”的完整攻略。 什么是正则表达式 正则表达式,也称为“正则式”、“规则表达式”、“常规表达式”,是计算机科学中的一种计算方法。它是一种文本模式,用来描述、匹配和修改一系列文本。正则表达式通常被用来搜索、替换和提取文本中的部分内容。 使用正则表达式需要了解一些基本语法和符号,以下是常用的正则表达式元字…

    JavaScript 2023年5月19日
    00
  • javascript在线编码查询工具

    基本介绍 “javascript在线编码查询工具”是一款web应用程序,可以用来编码和解码经常在javascript编程中使用的不同数据类型,比如文字、URL、base64等等。这个工具可以通过浏览器使用,不需要安装或者配置过程。下面我们来详细介绍如何使用这个工具。 使用步骤 打开 javascript在线编码查询工具网站:https://www.sojso…

    JavaScript 2023年5月20日
    00
  • 浅谈在js传递参数中含加号(+)的处理方式

    下面我就来详细讲解在js传递参数中含加号(+)的处理方式: 1. 问题描述 在URL参数传递时有时会遇到含有加号(+)的情况,这时候我们需要进行特殊处理,否则这个加号会被解析成空格,导致参数传递错误。 例如,我们想要传递一个字符串 “hello+world”,但是如果直接将这个字符串”hello+world”作为URL参数进行传递,会被解析成 “hello …

    JavaScript 2023年5月19日
    00
  • JS基于正则表达式的替换操作(replace)用法示例

    JS基于正则表达式的替换操作(replace)是指通过正则表达式来查找目标字符串中的特定内容,并且将这些特定内容替换成指定的文本。replace方法基于正则表达式模式来查找替换目标字符串中符合要求的部分。replace方法是字符串的一种方法,它使用指定的模式匹配来搜索字符串,并使用一个替换字符串来替换匹配的子串,而不改变原始字符串。 replace基本用法 …

    JavaScript 2023年6月10日
    00
  • javascript 闭包详解及简单实例应用

    JavaScript 闭包详解及简单实例应用 在 JavaScript 中,闭包是一个重要的概念,也是一个令人困惑的概念。理解闭包的概念和用法,可以大幅提高你的 JavaScript 编程水平。在这篇文章中,我们将介绍什么是闭包,为什么需要它们,并且演示几个具体的使用场景。 什么是闭包? 闭包是指在函数内部定义的函数,该函数可以访问在外部函数作用域中声明的变…

    JavaScript 2023年6月11日
    00
  • javascript jQuery $.post $.ajax用法

    下面是关于JavaScript jQuery中$.post和$.ajax用法的详细攻略。 什么是 jQuery? jQuery 是 Javascript 中的一种框架,可以方便地操作 HTML 文档、处理事件、制作动画方法等。jQuery 中提供了很多常用的函数和方法,使用它可以更加高效、简洁地编写Javascript代码。 jQuery 的 $.post …

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