js 函数节流

JavaScript-节流函数的实现 1、对节流函数该怎么理解 日常小案例: 老师在上完课后给大家【五分钟】询问大家有没有什么问题要问 但是在【五分钟】之内,不管有多少同学 来问问题,都只会【解答一个问题】 如果在解答一个问题后,5分钟过后还没有同学问问题,那么就下课 所以用三句话理解就是: 当事件触发时,会触发这个事件的响应函数 当事件密集触发时,节流函数会按照一定的频率来执行函数 不管在这个中间有多少次触发这个事件,执行函数的频率总是固定的 2、拙劣的图解 3、 节流的应用场景 监听页面的滚动事件 鼠标的移动事件 阅读详情

一。函数防抖:基本思想是指,某些代码不可以在没有间断的情况连续重复执行。第一次调用函数, 创建一个定时器,在指定的时间间隔之后运行代码。当第二次调用该函数时,它会清除前一次的定时器 并设置另一个。如果前一个定时器已经执行过了,这个操作就没有任何意义。然而,如果前一个定时器 尚未执行,其实就是将其替换为一个新的定时器。目的是只有在执行函数的请求停止了一段时间之后才 执行。常用于 onresize 事件。

function debounce (fn, delay = 100, context) {
        let Timer = 0
        return function () {
            clearTimeout(Timer)
            Timer = setTimeout(() => {
                fn.call(context)
            }, delay)
        }
    }

测试代码:

 function test () {
        console.log('我是测试代码!')
    }

    let variable = debounce(test)
    for (let i = 0; i < 10000; i++) {
        variable()
    }
输出:我是测试代码!

最终发现通过调用10000次改函数结果只触发了一次。并且触发的时间是执行完后延迟 100ms才输出的。首次不会触发

二。函数节流:指在指定的时间内,只触发一次。

function throttle (fn, delay = 100, context) {
        let last = 0
        return function () {
            let now = new Date().valueOf()
            if (now - last > delay || !last) {
                last = now
                fn.call(context)
            }
        }
    }
 function test () {
        console.log('我是测试代码!')
    }

    let variable = throttle(test)
    for (let i = 0; i < 10000; i++) {
        variable()
    }
输出:我是测试代码!

先立即输出。缺陷最后一次的操作并不能保证一定触发。

三。组合模式。

function compose (fn, delay = 100, context) {
        let Timer = 0,
            last = 0
        return function () {
            let now = new Date().valueOf()
            if (now - last > delay || !last) {
                last = now
                fn.call(context)
            }
            clearTimeout(Timer)
            Timer = setTimeout(() => {
                fn.call(context)
            }, delay)
        }
    }

首次和最后一次的操作都会触发。

JS中节流函数介绍与实现(秒懂如何手写节流) 它会设置一个时间间隔,只有当两次事件触发的时间间隔超过了这个设定的时间间隔时,才会执行处理函数。如果两次触发事件的时间间隔小于设定的时间间隔,那么处理函数就不会被执行,从而实现了控制函数执行频率的效果。节流函数在实际开发中经常被用来优化高频触发的事件处理,例如在页面滚动、输入框输入等场景下,通过节流来控制函数的执行频率,从而提升页面性能和用户体验。节流函数是一种用于控制函数执行频率的技术。它可以确保函数在一定时间间隔内最多只执行一次,从而避免频繁触发导致性能问题或不必要的资源消耗。基本实现手写防抖函数。 阅读详情

相关推荐

LVGL在STM32H743IIT6上的性能优化技巧:如何提升图形界面刷新速度

本文详细介绍了在STM32H743IIT6高性能MCU上优化LVGL图形界面刷新速度的实战技巧。通过利用芯片的DMA2D硬件加速模块替代低效的软件画点,将绘制缓冲区放入SDRAM并启用双缓冲机制,以及合理配置CPU缓存与MPU,有效解决了界面卡顿问题。文章还涵盖了LVGL引擎调优、内存架构优化等关键步骤,帮助开发者充分发挥STM32H743的硬件潜力,实现流畅的图形界面体验。

vscode6remote的博客 308

节流函数

节流函数就是在单位时间(10s)内随便触发多少次,只要过了单位时间(10s)就会执行一次。 应用场景是:用户在输入框内疯狂输入字符串,每经过单位时间就会向后端发起请求查询数据库。 节流函数有两种实现方式:1.定时器 2.计算时间差 时间差实现 function throttle(fn, delay) { let previous = 0; // 使用闭包返回一个函数并且用到闭包函数外面的变量previous return function() { let args = argume

kola的博客 9224

Windows Server安装Intel I219-V网卡驱动完整教程

在Windows Server系统上安装Intel I219-V网卡驱动的方法。

小白成长历程 5187

防抖与节流

防抖与节流 防抖(Debounce)和节流(Throttle)都是用来控制某个函数在一定时间内触发次数,两者都是为了减少触发频率,以便提高性能以及避免资源浪费 节流是第一个说了算,后续都会被节流阀屏蔽掉,防抖是最后一个说了算,前面启用的都会被清除 1. 防抖函数 防抖就是指触发事件后在 n 秒内函数只能执行一次,如果在 n 秒内又触发了事件,则会重新计算函数执行时间 <input type="text"> <script> // 防抖 事件触发 n 秒后执行一次, 如果在 n 秒

langmanboy的博客 2820

基于STM32的智能盆栽管家系统设计与实现(开题报告2)

本文设计了一种基于STM32的智能盆栽管家系统,旨在解决传统盆栽养护依赖人工、效率低下的问题。系统以STM32为核心,集成土壤湿度、温湿度及光照传感器,通过WiFi模块实现数据上传与远程控制,配备OLED显示屏本地显示,并利用继电器控制水泵与补光灯实现自动化养护。软件方面开发嵌入式程序、安卓APP及云平台,支持数据采集、远程监控和智能决策。相比现有产品,本系统具有成本低、扩展性强等优势,可满足家庭用户对植物精细化管理的需求。研究计划12周完成,包括硬件设计、软件开发、系统测试等环节,最终形成一套完整的智能盆

毕业作品网站 479

ROS2理论与实践_宇树机器人Go2开发指南(文字)

本文介绍了Unitree Go2机器人ROS2开发环境的安装与配置流程。主要内容包括:1)从GitHub克隆unitree_ros2仓库;2)安装ROS2 Foxy版本依赖项;3)编译特定版本的CycloneDDS(0.10.2);4)编译unitree_go和unitree_api功能包;5)网络配置,包括设置静态IP和修改环境变量脚本setup.sh以指定网络接口。文章还提供了本地回环测试的替代方案,并建议配置完成后重启电脑。整个流程涉及ROS2环境切换、网络适配和编译安装等多个技术环节。

Li_Dongyi的博客 4209

JS高级——节流函数

在某个时间内(比如500ms),某个函数只能被触发一次;过程:当事件触发时,相应的函数并不会立即触发,按照一定的频率去执行默认情况下,我们的防抖函数最后一次是不会执行的因为没有达到最终的时间,也就是条件满足不了的但是,如果我们希望它最后一次是可以执行的,那么我们可以让其传入对应的参数来控制我们来看一下代码如何实现:我们增加了else语句:所以我们可以使用timer变量来记录定时器是否已经开启已经开启的情况下,不需要开启另外一个定时器了else语句表示没有立即执行的情况下,就会开启定时器;

@SCY 1万+

腾讯会议+OBS虚拟摄像头:解决多人屏幕共享的终极指南(附常见问题排查)

本文详细介绍了如何利用OBS虚拟摄像头技术,解决腾讯会议中多人屏幕共享的痛点。通过将OBS作为视频混流中心,可以突破腾讯会议单屏共享的限制,实现多屏幕、多窗口内容的同步展示,并提升演示的专业度。文章涵盖了Windows与Linux双平台的配置步骤、高阶场景搭建以及常见问题(如黑屏、画中画)的排查方法,是团队协作与专业演示的实用指南。

i8j9k0l1的博客 932

详解防抖函数(debounce)和节流函数(throttle)

详解防抖函数(debounce)和节流函数(throttle)

dksks130的博客 1万+

第三章:ESP32零基础教学 - 3.4 蓝牙通信

本文详细介绍了如何在ESP32上实现经典蓝牙和BLE通信,并提供了代码解释和示例。通过这些示例,你可以轻松地将蓝牙功能集成到你的物联网项目中。无论是经典蓝牙的简单串口通信,还是BLE的灵活服务架构,ESP32都能满足你的需求。

Hi__gril的博客 4022

PyRoki:机器人运动学优化库入门教程

PyRoki:模块化机器人运动学优化工具包 本文介绍了PyRoki,一个模块化、可扩展且跨平台的机器人运动学优化工具包。PyRoki通过统一变量和成本函数接口,简化了逆运动学、轨迹优化和运动重定向等任务的实现,支持CPU、GPU和TPU加速。实验表明,PyRoki在批量逆运动学任务中比现有GPU加速库cuRobo快1.4-1.7倍,且收敛误差更低。其模块化设计支持快速集成新成本函数,并通过交互式可视化工具优化参数配置。PyRoki开源发布,为机器人运动优化提供了灵活高效的解决方案。

机器人控制与仿真应用 1293

JS 节流函数的实现

限制一个函数在一定时间内只能执行一次我自己的理解: 节流函数就是 在规定时间内 不管触发几次该事件,都只执行第一次,第一次触发事件等待delay后,事件执行。timer置为null,再次循环。

qq_63299825的博客 4827

独立游戏之路:Tap篇 -- 个人开发者上架TapTap步骤和注意事项

作为一名游戏开发者,将自己的独立游戏上架到 TapTap 平台是一个不错的选择。TapTap 是一个拥有大量用户的游戏社区平台,上架游戏可以让更多的玩家发现和体验你的游戏。TapTap 是一个游戏社区平台,用户可以在平台上下载和分享游戏。TapTap 拥有大量的用户,并且用户活跃度高,这为独立游戏开发者提供了一个很好的展示和推广平台。进入TapTap开发者服务后台。

陈言必行 -- Unity游戏开发领域优质博主 6431

JavaScript第 13 篇,JavaScript节流函数,JavaScript节流功能的应用(JS节流函数,节流功能的应用与解析,深入了解JavaScript节流函数)

⭐节流就是某一高频事件不断被触发时,将多次执行变成每隔一段时间执行,具体点就是减少一个事件在一段时间内的触发频率,它是一种常用的函数优化技术,可以限制函数的执行频率,从而提高网页的性能和用户体验,这里带你深入了解下JavaScript节流函数的概念、实现原理和应用场景,并提供一些实用的代码示例。简单记录一下

AI Agent 全栈架构师(AI + GIS + Backend)& 数字芯片系统架构师(FPGA),NorthCity Smile的博客(NcSmile,博主域名:https://ncmile.blog.youkuaiyun.com) 1万+

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【JS】javaScript 函数节流

什么是javascript函数节流?从其字面意思可以大概猜到是一种为提升函数调用执行性能的一种方法。javascript函数节流就是针对调用频率高的函数,通过设置定时器,使其在执行后间隔一段时间,才进行下一次的执行,避免重复频繁的调用导致的浏览器性能以及ajax重复调用问题。 函数节流的经典应用场景:onresize,scroll,mousemove ,mousehover等事件回调函数的无间断...

Ning+ 343

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Javascript函数防抖与节流的理解以及在vue和原生js中的使用

防抖和节流的目的都是为了减少不必要的计算,不浪费资源,只在适合的时候再进行触发计算。 一、函数防抖(debounce) 1.定义: 事件触发停止一定时间后才会执行响应的函数,期间如果重复调用动作,重新计算时间。类似于,按下一个弹簧,只有你松手的时候弹簧才会弹起。本质上是将多次操作合并为一次操作。可用一个定时器维护,事件触发后wait时间内如果事件重复触发,那么取消当前定时器,重新设置一个时延为wa...

前端李小白的博客 583

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

js之节流函数

节流 原理 规定一个单位时间,在这个单位时间内,只能有一次触发事件的回调函数执行,如果在同一个单位时间内某事件被触发多次,只有一次能生效。 实现 时间戳实现 注意:第一次事件会被触发,最后一次不会触发函数 throttle.js function throttle(func, wait) { let _this, args; // 之前的时间戳 let old = 0; return function () { // 保存this _this = this; //保.

angula 6699

JS | JavaScript函数防抖和节流全解析

防抖和节流本质上是优化高频率执行代码的一种手段,如:浏览器的 resize、scroll、keypress、mousemove 等事件在触发时,会不断地调用绑定在事件上的回调函数,极大地浪费资源,降低前端性能。为了优化体验,需要对这类事件进行调用次数的限制,对此我们就可以采用 防抖(debounce)和 节流(throttle)的方式来减少调用频率。节流——n 秒内只运行一次,若在 n 秒内重复触发,只有一次生效。防抖——n 秒后再执行该事件,若在 n 秒内被重复触发,则重新计时.........

青春木鱼的博客 3215

JavaScript节流函数和防抖函数之间的区别

JavaScript节流函数和防抖函数之间的区别 两者都是优化高频率执行js代码的一种手段 节流函数:指一定时间内js方法只跑一次 防抖函数: 指频繁触发的情况下,只有足够的空闲时间,才执行代码一次 节流函数 var flat = true; window.onscroll = function(){ if(!flat){ // 判断是否已空闲,如果在执行中,则直接return return; } flat = false; setTimeout(function(){ console

sjfsp的博客 213

JavaScript函数节流

一、前言 相对于函数防抖来说,函数节流的应用场景和频次更大一些。当然,如果想复习函数防抖,请点击《函数防抖》。废话不多,上正题: 二、什么是函数节流 我们设想一个进地铁站过闸机的场景:每位乘客在刷卡进入之后,大约2秒后门关闭,下一个乘客才能刷卡进入。如果上一个乘客刷卡之后还没有进入或者闸机还未关闭,此时另一个乘客在当前闸机是刷不上卡的。这就是一种节流的操作。 节流函数:不管事件的触发频率有多高,只会间隔设定的时间执行一次目标函数。简单来说:每隔单位时间,只执行一次 三、为什么要函数节流 某些情况下,浏览器的

杨树林er的博客 624

js 节流函数

// 节流函数,比如用在窗口大小改变的事件 function throttle(fn, interval) { // last为上一次触发回调的时间 var last = 0; // 将throttle处理结果当作函数返回 return function () { // 保留调用时的this上下文 var context = this...

笔记库 1639

JS中函数节流的使用

在JS中的函数大多数情况下都是由用户主动触发调用的,除非是函数本身不合理,一般我们不会遇到与性能相关的问题。但是在一些少数情况下,函数的触发不是由用户直接控制的。在这些场景下,函数非常有可能被频繁的地调用,从而造成大的性能问题。

xllllll___的博客 1053

underscore.js中节流函数的解析

underscore.js中节流函数的解析源码简化版 源码 underscore.js是一个经典的js工具库,随着语言的发展,虽然现在用的少了,但它像jquery一样,甚至影响了语言的发展,足以说明其厉害之处。许多开发人员进阶首选学习的就是它。 本文解析一下其中的防抖函数,加深对js语言的理解。 节流和防抖的区别: 防抖函数:连续触发时,刷新上一次的定时器,在一定时间段内只响应最后一次。 节流函数:连续触发时,只会在一定时间段内触发一次,不刷新时间间隔,也就是可以多次触发。 简单点说就是比如点击一个按钮,用

qq_34415621的博客 397

【JavaScript】使用js实现3版函数节流

html js function throttle(func, wait) { let prevTime = 0; return () => { args = arguments; const _this = this; let nowTime = new Date().valueOf(); if(nowTi...

lizhengxv的博客 253

JavaScript函数节流和函数防抖之间的区别

转载——https://www.cnblogs.com/walls/p/6399837.html JavaScript函数节流和函数防抖之间的区别 一、概念解释  函数节流和函数防抖,两者都是优化高频率执行js代码的一种手段。  大家大概都知道旧款电视机的工作原理,就是一行行得扫描出色彩到屏幕上,然后组成一张张图片。由于肉眼只能分辨出一定频率的变化,当高频率的扫描,人类是感觉不出来的。反而形...

进击的葱 219

js原生函数节流

函数节流就是一定时间内只触发一次函数。原理是通过判断是否到达一定时间来触发函数。 // 时间戳方案 function throttle(fn,wait){ var pre = Date.now(); return function(){ var context = this; var args = arguments; var n...

Army-海军的博客 1万+
上一篇: js 拖放
下一篇: typeScript
黄祚敏
博客等级 码龄10年 22粉丝 89原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值