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

兼职网网站建设方案建议书h5网站开发软件下载

兼职网网站建设方案建议书,h5网站开发软件下载,国家企业信用信息查询公示系统广东,泉州百度广告一、防抖和节流主要是干什么的 防抖和节流主要用于控制函数执行的频率#xff0c;通过限制函数的触发次数#xff0c;避免函数被过度调用而引发的性能问题或产生不必要的副作用。 二、防抖 防抖是什么: 1、对于在事件被触发 n 秒后再执行的回调 -- 延迟执行 2、如果…一、防抖和节流主要是干什么的 防抖和节流主要用于控制函数执行的频率通过限制函数的触发次数避免函数被过度调用而引发的性能问题或产生不必要的副作用。 二、防抖 防抖是什么: 1、对于在事件被触发 n 秒后再执行的回调  -- 延迟执行 2、如果在这  n  秒内再次触发事件重新开始计时 防抖的场景: 1、ajax 请求数据 / 提交数据下拉刷新     2、输入验证 注意防抖有两种场景一种是上来就要执行一次一种是在规定的时间后去执行 具体实现 // 第一种写法:普通写法 // 在执行事件之后不会立即执行而是等到定时器时间结束之后才开始执行 /*** * param {*} func 需要执行的函数* param {*} delay 延迟执行的时间* returns */ function debounce(func, delay) {let timer nullreturn function() {clearTimeout(timer)var self thisargu argumentstimer setTimeout(function() {func.apply(self, argu)}, delay);} } /*** 使用 setTimeout 实现防抖。* 在函数被调用时清除之前设置的定时器。* 在延迟时间内连续调用函数时会不断清除之前的定时器并重新设置新的定时器确保只有在最后一次调用后的延迟时间结束后才会执行函数。* 通过闭包保存定时器变量确保每次调用都使用同一个定时器。* 优点是简单易懂缺点是无法立即触发函数只有在延迟时间结束后才会执行函数。*/// 用来测试的方法 function test() {console.log(测试防抖); } // 获取到页面的 dom 节点 let de document.querySelector(.testDebounce); // 使用第一种方法实现防抖 de.addEventListener(click, debounce(test, 2000))// 第二种写法:包含是否立即执行 // 在执行事件之后会立即执行一次剩下的时候就是会在定时器结束才会继续执行 /*** * param {*} func 需要执行的函数 * param {*} delay 延迟执行的时间* param {*} triggleNow 是否立即执行 -- 布尔值* returns */ function debounce(func, delay, triggleNow) {var timer nullvar debounced function() {var self thisvar argu argumentsif (timer) {clearTimeout(timer)}if (triggleNow) {var noTimer !timertimer setTimeout(function() {timer null}, delay)if (noTimer) {func.apply(self, argu)}} else {timer setTimeout(function() {func.apply(self, argu)}, delay)}}debounced.remove function() {clearTimeout(timer)timer null}return debounced } /*** 使用计时器和闭包实现防抖。* 在函数被调用时清除之前设置的定时器。* 如果设置了 triggleNow 参数为 true则在函数第一次被调用时立即执行函数之后的连续调用会在延迟时间结束后才能再次触发函数。* 如果没有设置 triggleNow 或设置为 false则在延迟时间结束后执行函数。* 通过闭包保存定时器变量和函数执行状态确保只有符合条件的调用才能触发函数。* 通过 debounced.remove 方法可以手动移除定时器取消防抖效果。* 优点是灵活性高可以设置立即触发和手动移除定时器缺点是稍显复杂。*/// 用来测试的方法 function test() {console.log(测试防抖); } // 获取到页面的 dom 节点 let de document.querySelector(.testDebounce); // 使用第二种方法实现防抖 de.addEventListener(click, debounce(test, 2000, true)) 三、节流 节流是什么: 1、事件被触发n 秒之内只执行一次事件处理函数 2、无论在这段时间内触发了多少次函数调用只会执行一次 节流的场景: 1、输入验证验证长度等 2、ajax 提交 具体实现 // 第一种写法: // 通过一个变量来判断当前函数的执行状态形成闭包 /*** * param {*} func 需要执行的函数* param {*} delay 延迟执行的时间* returns */ function throttle1(func, delay) {let timer nulllet shouldExecute truereturn function(...args) {if (!shouldExecute) {return}shouldExecute falsetimer setTimeout(function() {func.apply(this, args)shouldExecute true}, delay)} } /*** 具体实现流程:* 使用 setTimeout 实现节流。* 在函数被调用时设置一个延迟定时器并在延迟时间结束后执行函数。* 通过一个标志位 shouldExecute 控制是否执行函数在延迟时间内连续调用函数只会执行一次。* 一旦函数执行完毕将 shouldExecute 设置为 true表示可以再次执行函数。* 优点是延迟时间可以精确控制缺点是在延迟时间内的连续函数调用会被忽略。*/// 用来测试的方法 function test() {console.log(节流数据); } // 获取到页面的 dom 节点 let tt document.querySelector(.testThrottle)// 使用第一种方法实现节流 tt.addEventListener(click, throttle1(test, 2000)) // 第二种写法: // 通过两个时间戳来判断当前函数的执行状态也会形成闭包 /*** * param {*} func 需要执行的函数* param {*} delay 延迟执行的时间* returns */ function throttle2(func, delay) {let timer nulllet begin new Date().getTime()return function() {let self thislet argu argumentslet current new Date().getTime()clearTimeout(timer)if (current - begin delay) {func.apply(self, argu)begin current} else {timer setTimeout(function() {func.apply(self, argu)}, delay)}} } /*** 具体实现流程:* 使用计时器和时间戳实现节流。* 在函数被调用时记录当前时间戳 current。* 如果当前时间戳距离上一次调用时间戳 begin 大于等于设定的延迟时间 delay则立即执行函数并更新 begin 的值为当前时间戳。* 如果当前时间戳距离上一次调用时间戳 begin 小于延迟时间 delay则设置一个延迟定时器在延迟时间结束后执行函数。* 优点是在延迟时间内的连续函数调用不会被忽略缺点是延迟时间不是精确的而是最小延迟时间和连续函数调用之间的时间差*/// 用来测试的方法 function test() {console.log(节流数据); } // 获取到页面的 dom 节点 let tt document.querySelector(.testThrottle)// 使用第二种方法实现节流 tt.addEventListener(click, throttle2(test, 2000)) 总结 防抖和节流都能够优化函数执行频率提升性能控制事件触发频率优化用户输入实现平滑动画等。在需要控制函数执行频率以避免资源浪费、提高交互体验或优化动画效果的场景中防抖和节流都是非常有用的技术手段 如果还是不太能理解他俩的区别之前我在一个评论区看到一个神评“防抖就是回城节流就是放技能”相信看到这句话就能通俗易懂的理解他俩之间的区别了。
http://www.hkea.cn/news/14497569/

相关文章:

  • 浙江做网站公司排名网站建设如何描述
  • 郑州大型网站开发公司网站后台 搜索
  • 模板建站哪里有建筑公司加盟分公司
  • 长沙网站排名优化上海外贸股票
  • 网站地图 格式德国建设部网站
  • 山东网站建设设计公司wordpress登陆错误
  • 遵义建站电商网站产品模块
  • 网站提交网站域名备案要多久
  • 做外贸网站功能成都网站制作成都
  • 做网站需要哪些钱网站建设需要版块
  • 网站建设解决恩问题商丘做建设网站的公司
  • 盘州网站建设益阳做网站
  • 做公司网站的腾度淄博网站建设
  • 苏州做学校网站的vps架设好网站访问不了
  • 怎么做后台网站一键更新音平商城谁做的网站
  • 网站建设如何入账wordpress 扫码支付宝
  • 赤峰做网站建设的企业合肥网站制作
  • 钢铁建设网站太原网站制作公司飞向未来
  • 黑龙江网络公司网站建设如何引用网站上的资料做文献
  • 一般网站建设需求有哪些宁波网站推广平台咨询公司
  • 如何修改wordpress站建设工程施工合同通用条款
  • wordpress xampp建站北京网络营销
  • 海口网站排名提升做网站外包公司名称大全
  • 网站建站上海网站后台在哪里
  • 建个微商城网站多少钱网站左侧导航代码
  • 新开传奇网站大全北京网页设计公司网站
  • 建设工程造价信息网站做模板网站赚钱吗
  • 企业网站建设解决方案网站建设费可以一次性冲费用吗
  • 提供免费空间的网站企业信息查询app哪个最好
  • 建设企业网站的常见成本有哪些网站建设的平台分析