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

标准网站优势东莞十大公司排名

标准网站优势,东莞十大公司排名,中铁集团2021招聘信息,大连关键词快速排名文章目录 清理所有定时器防抖代码节流代码自定义时间戳定时器复杂实现 vueuse中工具类 定时任务手动实现工具类useInterval 清理所有定时器 export function clearAllTimer() {let id setTimeout(() { }, 0)while (id 0) {window.clearTimeout(id)id--} }防抖代码 … 文章目录 清理所有定时器防抖代码节流代码自定义时间戳定时器复杂实现 vueuse中工具类 定时任务手动实现工具类useInterval 清理所有定时器 export function clearAllTimer() {let id setTimeout(() { }, 0)while (id 0) {window.clearTimeout(id)id--} } 防抖代码 当函数绑定一些持续触发的事件如resize、scroll、mousemove 键盘输入多次快速click等等 如果每次触发都要执行一次函数会带来性能下降资源请求太频繁等问题 // 第一个参数是需要进行防抖处理的函数第二个参数是延迟时间默认为1秒钟 // 这里多传一个参数immediate用来决定是否要第一次立即执行, 默认为false function debounce(fn, delay 1000, immediate false, resultCb) { // 实现防抖函数的核心是使用setTimeout// time变量用于保存setTimeout返回的Idlet time null// isImmediateInvoke变量用来记录是否立即执行, 默认为falselet isImmediateInvoke false// 将回调接收的参数保存到args数组中function _debounce(...args) {// 如果time不为0也就是说有定时器存在将该定时器清除if (time ! null) {clearTimeout(time)}// 当是第一次触发并且需要触发第一次事件if (!isImmediateInvoke immediate) {// 将函数的返回值保存到result中const result fn.apply(this, args)if (typeof resultCb function) {// 当用户传递了resultCb函数时执行该函数并将结果以参数传递出去。resultCb(result)}// 将isImmediateInvoke设置为true这样不会影响到后面频繁触发的函数调用isImmediateInvoke true;}time setTimeout(() {// 使用apply改变fn的this同时将参数传递给fnfn.apply(this, args) // 当定时器里的函数执行时也就是说是频繁触发事件的最后一次事件// 将isImmediateInvoke设置为false这样下一次的第一次触发事件才能被立即执行isImmediateInvoke false}, delay)}// 防抖函数会返回另一个函数该函数才是真正被调用的函数return _debounce }使用 const a debounce((){console.log(asd)})button.onclick(a)button被点击的事件就被加上防抖函数了。 节流代码 限制代码访问频率如某个代码1分钟只能执行一次。 自定义 时间戳 function throttle(func, wait) {var previous 0;return function() {let now Date.now();let context this;let args arguments;if (now - previous wait) {func.apply(context, args);previous now;}} } const throttledFn throttle(count,1000);定时器 function throttle(func, wait) {let timeout;return function() {let context this;let args arguments;if (!timeout) {timeout setTimeout(() {timeout null;func.apply(context, args)}, wait)}} }复杂实现 // leading参数用来控制是否第一次立即执行默认为true function throttle(fn, interval, leading true) {//该变量用于记录上一次函数的执行事件let lastTime 0// 内部的控制是否立即执行的变量let isLeading true// time 保存定时器的idlet time nullconst _throttle function(...args) {// 获取当前时间const nowTime new Date().getTime()// 第一次不需要立即执行if (!leading isLeading) {// 将lastTime设置为nowTime这样就不会导致第一次时remainTime大于intervallastTime nowTime// 将isLeading设置为false这样就才不会对后续的lastTime产生影响。isLeading false}// cd剩余时间const remainTime nowTime - lastTime// 如果剩余时间大于间隔时间也就是说可以再次执行函数if (remainTime - interval 0) {fn.apply(this, args)// 将上一次函数执行的时间设置为nowTime这样下次才能重新进入cdlastTime nowTime}if (remainTime interval) {// 判断是否存在定时器如果存在则取消掉if (time) clearTimeout(time)// 设置定时器time setTimeout(() {// 由于该定时器会在没有事件触发的interval时间间隔后才会执行也就是说一轮事件// 执行已经结束使用需要将isLeading复原这样下一轮事件的第一次事件就不会立即执行了。isLeading true}, interval)}}// 返回_throttle函数return _throttle }vueuse中工具类 const throttledFn useThrottleFn(() {// 操作1s只能执行一次 }, 1000)定时任务 手动实现 setInterval(() {handleQuery();}, 1000 * 60 * 5);setInterval不晓得为啥有时候有bug // 定时器查询 function handleQueryByInterval() {setTimeout(() {handleQuery();handleQueryByInterval();}, 1000 * 60 * 5); }工具类useInterval useInterval(() {handleQuery();}, 1000);
http://www.pierceye.com/news/817371/

相关文章:

  • 淘宝网站开发成本武进建设局网站进不去
  • 比较好网站制作公司行业协会网站织梦模板
  • 牛人网络网站像wordpress一样的网站吗
  • 那种做任务的网站叫什么wordpress 数据库 旧Ip
  • 制作深圳网站建设百度推广广告收费标准
  • 电影采集网站建设国产做爰全免费的视频网站
  • 集团网站建设特点 助君长春seo公司网站
  • 网站域名备案 更改吗在线做文档的网站
  • 青海网站制作多少钱做网站教程pdf
  • dw做网站背景音乐wordpress 获取当前文章id
  • 上海鹭城建设集团网站icp备案查询
  • 企业站用什么程序做网站深圳手机报价网站
  • 网站开发国外研究状况建设部相关网站
  • 租赁网站开发台州网站优化
  • 网站开发人员工工资网站开发一个支付功能要好多钱
  • 工程建设管理网站源码网站怎样做地理位置定位
  • 太仓公司网站建设电话网络公关名词解释
  • 江门网站建设策划什么是网络营销职能
  • 北京网站托管毕设做网站是不是太low
  • 企业网站建设费用属管理费用吗重庆网站建设制作设计公司哪家好
  • 深圳营销型网站需要多少钱做网站个体户经营范围
  • php 手机网站 上传图片晋州做网站的联系电话
  • 云天下网站建设做抖音seo排名软件是否合法
  • 网站开发合同管辖权异议龙岩网上办事大厅官网
  • 建网站费用明细海口建设网站
  • 网站页面设计说明怎么写影视小程序源码
  • 传媒网站制作网站申请建设
  • 前端做项目的网站新密市城乡建设局网站
  • 网站app建设方案智能外呼系统
  • 创建网站免费注册wordpress 熊掌号代码