JS中手撕防抖函数和节流函数

1.防抖函数

1.1定义

说明:在一定时间内,频繁执行事件,只执行最后一次函数。(英雄联盟回城)

1.2步骤:

  1. 声明定时器函数
  2. 判断是否有定时器函数,如果有定时器函数的话就清除定时器。。
  3. 如果没有定时器函数的话,就开启定时器函数。
  4. 定时器函数放入执行的函数。

1.3代码

1.3.1原生JS实现

<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>手撕防抖函数</title><script src="./lodash.min.js"></script><style>.box {width: 200px;height: 200px;background-color: pink;font-size: 20px;line-height: 200px;text-align: center;}</style>
</head>
<body><div class="box"></div><script>//   获取盒子const box = document.querySelector(".box")// 说明变量let i = 0function mouseAdd() {box.innerHTML = i += 1}// 防抖函数:在规定的时间,频繁点击,只执行最后一次function debounce1(fn, time) {// 声明一个定时器变量let timer;// 返回一个匿名函数return function () {// 如果有定时器那么就清除if (timer) clearTimeout(timer)// 如果没有就创建一个定时器timer = setTimeout(function () {// 在定时器函数中执行要执行的函数fn();}, time)}}
box.addEventListener("mousemove", debounce1(mouseAdd, 1000))</script>
</body>
</html>

 1.3.2引入第三方库lodash

<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>手撕防抖函数</title><script src="./lodash.min.js"></script><style>.box {width: 200px;height: 200px;background-color: pink;font-size: 20px;line-height: 200px;text-align: center;}</style>
</head>
<body><div class="box"></div><script>//   获取盒子const box = document.querySelector(".box")// 说明变量let i = 0function mouseAdd() {box.innerHTML = i += 1}box.addEventListener("mousemove", _.debounce(mouseAdd, 1000))</script>
</body>
</html>

1.3.3效果图

2.节流函数

2.1定义

说明:在一定时间内,频繁执行事件,只执行一次函数(英雄联盟中的技能冷却)

2.2步骤:

  1. 声明定时器函数,并将定时器赋值为空。
  2. 没有定时器函数,就开启定时器函数。
  3. 定时器函数放入执行的函数,并将定时器变量赋值为空。

2.3代码

2.3.1原生JS实现

<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>手撕防抖函数</title><script src="./lodash.min.js"></script><style>.box {width: 200px;height: 200px;background-color: pink;font-size: 20px;line-height: 200px;text-align: center;margin: 0 auto;}</style>
</head>
<body><div class="box"></div><script>const box = document.querySelector(".box")let i = 0function moveAdd() {box.innerHTML = i += 1}//节流函数:在一定时间内,频繁执行事件,只执行一次函数。function throttle(fn, time) {let timer=nullreturn function () {if (!timer) {timer = setTimeout(function () {fn();timer = null}, time)}}}box.addEventListener("mousemove", throttle(moveAdd, 1000))</script>
</body>
</html>

2.3.2引入第三方lodash库

<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>手撕防抖函数</title><script src="./lodash.min.js"></script><style>.box {width: 200px;height: 200px;background-color: pink;font-size: 20px;line-height: 200px;text-align: center;margin: 0 auto;}</style>
</head>
<body><div class="box"></div><script>const box = document.querySelector(".box")let i = 0function moveAdd() {box.innerHTML = i += 1}box.addEventListener("mousemove",_.throttle(moveAdd,1000))</script>
</body>
</html>

2.3.3效果图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/254177.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

微服务Spring Cloud 02------使用Eureka实现注册中心(1)

1.Eureka简介 Eureka是Spring Cloud中的一个负责服务注册与发现的组件。遵循着CAP理论中的A(可用性)和P(分区容错性)。 Eureka是Netflix中的一个开源框架。它和 Zookeeper、Consul一样&#xff0c;都是用于服务注册管理的&#xff0c;同样&#xff0c;Spring-Cloud 还集成了Zo…

中台分类

大家好&#xff0c;我是易安&#xff0c;之前我们谈到过中台的概念&#xff0c;以及如何落地中台。今天我就带你一起看一看&#xff0c;行业常见的中台分类。 业务中台与数据中台 业务中台 业务这个词&#xff0c;其实是有些宽泛的&#xff0c;我听到很多人口中说的业务都不是…

NeRF-SLAM代码记录

前言 没运行成功,尤其是编译gtsam部分,每一步都有错,又是讨厌c++第一天。 这一行编译到92% 就会报错 python/CMakeFiles/gtsam_py.dir/build.make:250: recipe for target python/CMakeFiles/gtsam_py.dir/linear.cpp.o failed make[2

考研C语言第七章

7.2函数的声明定义&#xff0c;函数的分类和调用 1、函数声明要在main函数上面&#xff0c;这样main函数才可以进行调用 第一节课主要就学了函数的调用&#xff0c;项目在开发的时候分工用的比较多 主要结构&#xff1a; func.c里面进行函数的定义 不是很重要&#xff0c;进…

I.MX RT1170加密启动详解(2):Authenticated HAB认证原理

文章目录 1 基础2 使能过程3 Boot flow 1 基础 HAB认证是基于RSA或ECDSA算法的公钥密码学&#xff0c;它用一系列的私钥对image进行加密&#xff0c;然后BootROM在上电后用对应的公钥验证加密的镜像是否被修改。这个密钥结构就是PKI(Public Key Infrastructure)树 (1)normal …

苹果手机适合什么蓝牙耳机?适合iPhone的蓝牙耳机推荐

在大环境的趋势下&#xff0c;手机和蓝牙耳机可以说是出门必备&#xff0c;一线城市里地铁是通勤频率最高&#xff0c;所以很多人都会选择佩戴蓝牙耳机&#xff0c;无线耳机、颈挂式&#xff0c;种类繁多&#xff0c;苹果手机一直十分火爆&#xff0c;蓝牙耳机作为手机的附属品…

苹果手机没插耳机为什么显示耳机模式_苹果耳机不能用在国产手机上?

从事了多年的硬件工作&#xff0c;回头发现很少有总结的文档。打算借用平台分享自己的学习笔记&#xff0c;以及对于一些知识的见解。也算是对自己的总结吧&#xff01;同时也分享给可爱的你们~~ ~~~个人解读&#xff0c;有建议可以多多交流&#xff0c;不喜勿喷哦&#xff01;…

苹果手机配什么无线蓝牙耳机好?适配苹果手机的蓝牙耳机推荐

近年来&#xff0c;TWS耳机越来越受到消费者的欢迎&#xff0c;各家厂商也都推出过不少旗舰级产品&#xff0c;许多产品也是打着苹果平替的旗号来推荐&#xff0c;并且这些耳机在功能和音质上也毫不逊色&#xff0c;并且音质还更加的好&#xff0c;下面整理了几款适用于苹果手机…

关于华强北悦虎耳机破解开启苹果手机弹窗动画学习教程

2023年的315华强北抓了一批人&#xff0c;已经将华强北耳机的苹果弹窗动画确定为侵权&#xff0c;因此各个厂家为了自己的产品合规化已将弹窗动画功能给屏蔽或者关闭了&#xff0c;其中包括华强北中有名的悦虎耳机&#xff0c;不过网上也有一部分代理商家在偷偷卖带弹窗的版本&…

蓝牙耳机南卡和苹果哪个好用?南卡耳机和苹果耳机深度体验报告

现如今的蓝牙耳机品类越来越多&#xff0c;相较于其他款式&#xff0c;半入耳式蓝牙耳机始终是我的首选。因为半入耳蓝牙耳机相较于其他款式&#xff0c;有着方便携带、不压耳道、久戴不累耳等优点&#xff0c;对于通勤时间长的人来说真的很友好。上次看到网友问半入耳蓝牙耳机…

苹果手机变成耳机模式怎么调回来_苹果耳机推出“新功能”:打僵尸!

昨天晚上&#xff0c;苹果悄么声的在官网上发布了他们的最新产品&#xff1a;AirPods Pro&#xff0c;习惯了在发布会上搞大动静发售新产品的苹果&#xff0c;这次走了一波低调奢华的路线。 当然&#xff0c;苹果的文案还是一如既往的稳(如果你还记得iphone 11 pro的宣传文案&a…

苹果手机专用蓝牙耳机有哪些?与iphone兼容性好的蓝牙耳机

蓝牙耳机摆脱了线缆的束缚&#xff0c;在地以各种方式轻松通话。自从蓝牙耳机问世以来&#xff0c;一直是行动商务族提升效率的好工具&#xff0c;苹果产品一直都是受欢迎的数码产品&#xff0c;下面推荐几款与iphone兼容性好的蓝牙耳机。 第一款&#xff1a;南卡小音舱蓝牙耳…

苹果手机变成耳机模式怎么调回来_苹果耳机模式怎么调回来

有的时候手机会无缘无故进入耳机模式,具体表现就是已经把耳机从手机的耳机孔中拔出,但是手机依旧不会使用外放喇叭播放,在控制中心依旧显示有耳机的插入状态,那么苹果耳机模式怎么调回来呢?今天给大家详细介绍一下吧! 苹果耳机模式怎么调回来 苹果耳机模式怎么取消? 苹果…

苹果手机变成耳机模式怎么调回来_技巧 | 手机卡在耳机模式 怎么退出来?

你有没有发生过这样的情况&#xff1a;当你拔掉 iPhone 耳机的时候&#xff0c;手机被卡在了耳机模式上&#xff1f;一般会出现的情形是&#xff1a;你的 iPhone 的扬声器没有声音&#xff0c;而在某些情况下&#xff0c;你还会看见耳机音量显示依然停留在主屏幕上。如果对iPho…

[GXYCTF2019]Ping Ping Ping解题过程

1、来看看靶场 发现就只有这个提示&#xff0c;尝试一下在url输入框进行测试 页面返回ping的结果&#xff0c;然后我之前也做过另外一道类似的题 链接&#xff1a;[ACTF2020 新生赛]Exec1命令注入_[actf2020 新生赛]exec 1_旺仔Sec的博客-CSDN博客 尝试用管道符 果然是可以的…

WebrtcNode, publish-sdp offer 流程(1)

1. AmqpClient - New message received sdp offer 的消息 AmqpClient - RpcServer New message received {method: onTransportSignaling,args: [aa230ce0863e42baa8bae5c14e91e809,{sdp: v0\r\n o- 2367615733001925388 2 IN IP4 127.0.0.1\r\n s-\r\n t0 0\r\n agroup:BUND…

下载描述文件,体验使用 IOS 16 版新特性

简介 最新版本16.0&#xff0c;已经更新&#xff0c;虽然本文针对的是15.4升级&#xff0c;但是操作都是相同的。可以作为参考 温馨提示&#xff1a;大版本体验&#xff0c;一定要保证数据备份&#xff0c;不然有个大BUG的话&#xff0c;数据丢了得不偿失。 最新测试版&…

ios描述文件过期时间查看

这边主要是针对企业证书 以下对生产证书和描述文件过期时间的截图 以下是描述文件查看步骤 只能在苹果电脑查看原先这个包叫xxxx.ipa,要先将后缀改成zip双击这个文件&#xff0c;会生成一个文件夹 点击Payload进去&#xff0c;右键显示包内容找到embedded...bileprovision这…

iOS描述文件设置

iOS 12的某个版本后,iOS证书信任有了一些改动.下面我用Whistle来举个例子. 1. 设置要安装证书的设备的代理与端口 2. 扫码安装证书 其实这一步,扫码安装证书或者是在浏览器地址栏中输入对应的ip地址也是一样的 3. 证书的安装(旧版本这一步做完就能正常使用了) 本节的操作总结成…

iOS 理解证书与描述文件

简单的理一下iOS应用打包用到的Certificate与Provision Profile的关系 1.Certificate ——证书 1.1证书是什么? 百度百科是这么解释的: 由此,知道证书是由权利机关办法的用以证明资格或权利的文件. 1.2 我们向Apple申请证书是在干什么? 我们向Apple申请证书,就是在向权利…