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高级程序设计 阅读笔记(十五) 浏览器中的JavaScript

    JavaScript高级程序设计 阅读笔记(十五) 浏览器中的JavaScript 什么是浏览器中的JavaScript? 浏览器中的JavaScript,简称浏览器端JavaScript,是指使用JavaScript编写的代码在客户端(即浏览器)中运行的过程。 在浏览器中,JavaScript 主要通过以下方式调用: 直接在HTML页面中嵌入JavaScr…

    JavaScript 2023年5月18日
    00
  • JS hasOwnProperty()方法检测一个属性是否是对象的自有属性的方法

    JS中的hasOwnProperty()方法是用来检测一个属性是否是某个对象的自有属性的方法。它是基于原型链的继承机制的,只有当所查询的属性是对象本身的属性时才会返回true。 语法: object.hasOwnProperty(prop) 其中object是必需的,表示要检查属性的对象,prop参数也是必需的,表示要检查的属性名称,传入的参数是字符串类型。…

    JavaScript 2023年6月10日
    00
  • 经常用到的javascript验证函数收集第3/3页

    让我来详细讲解一下经常用到的JavaScript验证函数收集第3/3页的完整攻略。 收集背景 第3/3页的经常用到的JavaScript验证函数收集,是前端开发者经常用到的一些JavaScript函数的代码收集。这些函数可以帮助我们进行表单输入的验证处理、数据类型的判断、特殊字符的过滤等。 收集内容 该收集包含了以下几个部分: 表单验证函数 数据类型判断函数…

    JavaScript 2023年5月19日
    00
  • 浅析webpack 如何优雅的使用tree-shaking(摇树优化)

    浅析Webpack如何优雅的使用Tree-Shaking(摇树优化) 什么是Tree-Shaking Tree-Shaking(摇树优化)是指Webpack会把所有引入的模块融合为一个文件,然后去除掉其中未被使用的代码,生成的文件只包含实际需要用到的代码块。这种优化技术可以有效地减少打包出来的文件大小,从而提高网页的加载速度。 如何使用Tree-Shakin…

    JavaScript 2023年6月11日
    00
  • JavaScript Array 对象

    以下是关于JavaScript Array对象的完整攻略。 JavaScript Array对象 JavaScript Array对象是一种特殊的对象,用于存储一组有序的数据。数组中的每个元素都有一个唯一的索引可以通过索引访问数组中的元素。数组可以包含任何类型的数据,包括数字、字符串、对象等。 下面是一个创建和访问数组的示例: var arr = [1, 2…

    JavaScript 2023年5月11日
    00
  • JS实现快速比较两个字符串中包含有相同数字的方法

    要实现快速比较两个字符串中包含有相同数字的方法,可以使用 JavaScript 中的正则表达式进行匹配。具体实现可以分为以下步骤: 1. 获取字符串中的数字 使用正则表达式将字符串中的数字提取出来。 const str = "abc1def2ghi3jkl"; const pattern = /\d+/g; const numArray …

    JavaScript 2023年5月28日
    00
  • ElementUI中标签中ref、:model、:rules的作用浅析

    ElementUI是一款基于Vue.js的UI框架,提供了丰富的组件和样式来方便前端开发。其中标签用于快速生成表单,具有ref、:model、:rules三个重要的属性,下面将详细讲解其作用和使用方法。 ref属性 作用:用于设置表单的引用名称,方便在后续操作中使用。 示例: <el-form ref="myForm"> &l…

    JavaScript 2023年6月10日
    00
  • html5 web本地存储将取代我们的cookie

    HTML5 Web本地存储指的是一种在客户端(浏览器)端进行数据存储的技术。它主要通过Web Storage API和IndexedDB API来实现。 与传统的Cookie相比,Web本地存储有诸多优点。例如,Web本地存储提供了比Cookie更大的存储空间,并且数据存储在本地,不需要每次请求都带上一份数据,从而减少了网络流量。 以下是使用Web本地存储来…

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