JavaScript函数节流的两种写法

yizhihongxing

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日

相关文章

  • js 发个判断字符串是否为符合标准的函数

    下面我将详细讲解如何用js实现判断字符串是否符合标准的函数。 1. 实现思路 判断一个字符串是否符合标准,我们需要确定一个标准,然后遍历字符串的每一个字符,判断字符是否符合标准。在此基础上,我们可以写出判断字符串是否符合标准的函数,具体步骤如下: 确定标准,例如字符串只能包含数字和字母等。 遍历字符串的每一个字符,判断字符是否符合标准。 如果字符串所有字符都…

    JavaScript 2023年5月28日
    00
  • JS判断元素是否在数组内的实现代码

    判断一个元素是否在一个数组内,是在JS编程中非常常见的问题,一般通过indexOf()函数、includes()函数、for循环等方式实现。 indexOf()函数实现 indexOf() 函数返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。我们可以利用这一特点来实现判断元素是否在数组内。 const arr = [1, 2, 3, 4…

    JavaScript 2023年5月27日
    00
  • Hutia 的 JS 代码集

    Hutia 的 JS 代码集 什么是 Hutia 的 JS 代码集? Hutia 的 JS 代码集是一个由 Hutia 响应式模板引擎作者编写的 JavaScript 代码集,可以让前端开发者更高效地完成常见的前端开发任务。它包括了一些经常需要用到的常用函数和工具,可以用于各种类型的网站开发,包括响应式网站、Web 应用程序以及自适应 UI 设计等。 如何使…

    JavaScript 2023年6月11日
    00
  • Backbone.js框架中Model与Collection的使用实例

    首先我们先来简单介绍一下Backbone.js框架。Backbone.js是一个轻量级的JavaScript框架,它提供了MVC(Model-View-Controller)的架构,方便我们在前端开发过程中管理数据状态和逻辑。在Backbone.js框架中,最常用的两个组件是Model和Collection。 Model:Model是指一个数据模型,它相当于…

    JavaScript 2023年6月10日
    00
  • 前端设计模式——路由模式

    路由模式(Router Pattern):将页面的不同状态映射到不同的URL路径上,使得用户可以直接通过URL来访问页面的不同状态。 路由模式通常用于实现单页面应用(SPA)的页面导航和状态管理。具体来说,路由模式通过解析URL路径来确定应该显示哪个页面,并使用历史记录API来管理页面状态。 一般来说,路由模式包含以下几个关键部分: 1. 路由表:定义URL…

    JavaScript 2023年4月18日
    00
  • 简单介绍JavaScript的变量和数据类型

    当我们在编写JavaScript程序时,变量和数据类型是经常需要用到的概念,下面就来详细讲解一下。 基本概念 变量 变量是用来存储数据的容器,可以通过使用变量名来引用这些数据。JavaScript中的变量声明可以使用 var、let、const 等关键字来完成,其中 var 关键字是早期版本的语法,let 和 const 关键字是ES6中新增的。 数据类型 …

    JavaScript 2023年5月28日
    00
  • JavaScript中也使用$美元符号来代替document.getElementById

    在JavaScript中,我们常常会使用到document对象来访问HTML元素。比如,要获取id为”myElement”的元素,可以使用document对象中的getElementById方法来获取该元素: var myElement = document.getElementById("myElement"); 这种方式非常的常见,但…

    JavaScript 2023年6月10日
    00
  • qiankun 找不到入口问题彻底解决

    那我来详细讲解如何解决 “qiankun 找不到入口问题”。 问题背景 qiankun 是一个前端微服务框架,可以实现不同应用之间的动态加载和通信。但是,在使用 qiankun 的过程中,有时会遇到 找不到应用入口 的问题,这会导致应用无法正确加载。 解决步骤 1. 确认应用路径是否正确 首先确认引用路径是否正确。在主应用中,qiankun 会在指定路径下查…

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