当前位置: 首页 > news >正文

做网站烧钱吗应用市场

做网站烧钱吗,应用市场,武汉山水人家装饰公司,百度公司做网站手写防抖debounce 应用场景 当需要在事件频繁触发时,只执行最后一次操作,可以使用防抖函数来控制函数的执行频率,比如窗口resize事件和输入框input事件; 这段代码定义了一个名为 debounce 的函数,它接收两个参数:fn…

手写防抖debounce

应用场景

当需要在事件频繁触发时,只执行最后一次操作,可以使用防抖函数来控制函数的执行频率,比如窗口resize事件和输入框input事件;

这段代码定义了一个名为 debounce 的函数,它接收两个参数:fn(一个需要被防抖处理的函数)和 delay(一个延迟时间,单位是毫秒)。防抖(debounce)技术的主要目的是限制某个函数在一定时间内只执行一次,即使在这段时间内被频繁调用。这对于优化性能特别有用,比如避免因快速连续触发事件(如窗口调整大小、输入验证等)而造成的不必要的计算或 DOM 操作。

下面是代码的逐行解析:

  • let timer = null;:在这个函数作用域内声明一个变量 timer,并初始化为 null。这个变量将用来存储 setTimeout 的返回值,即一个可以被清除的计时器标识。
  • return function () { ... };debounce 函数返回一个新的匿名函数。这样做是因为我们希望返回一个经过防抖处理的新函数,而不是直接修改原函数。这种设计模式称为“闭包”,返回的函数能够访问外部函数(debounce)中的局部变量,如 timer
  • if (timer) clearTimeout(timer);:每次新的返回函数被调用时,首先检查 timer 是否存在且不为 null。如果存在,这意味着之前已经设置了一个定时器但尚未执行。此时,通过 clearTimeout 清除这个定时器,从而取消即将执行的 fn 调用。
  • timer = setTimeout(() => { fn.apply(this, arguments); }, delay);:这里设置一个新的定时器。当过了 delay 毫秒后,内部的箭头函数会被执行,它通过 apply 方法调用原始函数 fn,并确保 this 的上下文以及传给防抖函数的所有参数都能正确传递给 fnapply 的第一个参数 this 保证了在 fn 被调用时能保留正确的上下文环境,特别是当 fn 是对象的方法时;第二个参数 arguments 是一个类数组对象,包含了所有传入的参数。
function debounce(fn, delay) {let timer = null;return function () {
如果此时存在定时器的话,则取消之前的定时器重新记时if (timer) clearTimeout(timer);// 设置定时器,使事件间隔指定事件后执行timer = setTimeout(() => {fn.apply(this, arguments);}, delay);};}

应用

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><input type="text" id="myInput"><div id="display"></div>
</body>
<script>// 假设这是你的去抖动函数  function debounce(fn, delay) {let timer = null;return function () {if (timer) clearTimeout(timer);timer = setTimeout(() => {fn.apply(this, arguments);}, delay);};}// 这是你想要在输入框内容变化时执行的函数function updateContent(event) {// 获取输入框的值const inputValue = event.target.value;// 更新某个元素的内容(例如,一个显示框)displayElement.textContent = inputValue;}// 获取输入框和显示框的元素const inputElement = document.getElementById('myInput');const displayElement = document.getElementById('display');// 为输入框绑定事件监听器,并使用去抖动函数//将返回的函数绑定到相应的事件处理程序上,以实现防抖的效果。inputElement.addEventListener('input', debounce(updateContent, 500)); // 延迟500毫秒
</script></html>

展示

function debounce(fn,delay){
let timer=null;
return function(){
if(timer) clearTimeout(timer);
timer=setTimeout(()=>fn.apply(this,arguments),delay)
}}
http://www.15wanjia.com/news/19528.html

相关文章:

  • 电子商务网站 开发优化网站的软件下载
  • 做网站靠什么收入360信息流广告平台
  • 网站建设的可行性要求2024北京又开始核酸了吗今天
  • h5语言网站制作seo搜论坛
  • 宁波网站优化的关键网站开发的步骤
  • 做瞹瞹小视频网站网络营销与直播电商学什么
  • 安卓app制作工具seo搜索引擎优化报价
  • 武汉论坛网站杭州排名优化公司电话
  • 网站做的不满意网络搭建教程
  • 做日用品的要找什么网站好企业网站建设的步骤
  • 做网站哪一家公司好短视频营销的特点
  • wordpress如何克隆其他主题常州seo外包
  • 襄阳市住房和城乡建设局官方网站搜索引擎优化seo专员
  • 中国建设委员会网站上seo推广的特点
  • 专业做ppt的网站深圳网站建设服务
  • 英德网站建设网络推广网络营销和网站推广的区别
  • 怎么制作微信购物网站google seo教程
  • dedecms新网站 上传到万网的空间免费生成短链接
  • 国外哪些网站做产品推广比较好seowhy官网
  • 联邦快递的网站建设百度网络小说排行榜
  • wordpress模版 使用宁波seo网络推广优化价格
  • 河南无限动力做网站怎么样深圳推广优化公司
  • 个体可以做企业网站吗百度联盟广告收益
  • 做网站就必须要开公司吗推广什么app佣金高
  • 建立网站如何盈利虎扑体育网体育
  • 网站开发软件学习seo服务如何收费
  • 企业服务平台工程建设云谷歌seo最好的公司
  • 福州城乡建设发展总公司官方网站在线生成个人网站源码
  • 临沂手机网站建设seo有哪些优缺点?
  • 哈尔滨市建设安全监察网站_首页私域流量运营管理