vue中使用防抖节流

vue中使用防抖节流1 什么是防抖节流函数防抖 debounce 是指在一定时间内 在动作被连续频繁触发的情况下 动作只会被执行一次 也就是说当调用动作过 n 毫秒后 才会执行该动作 若在这 n 毫秒内又调用此动作则将重新计算执行时间 所以短时间内的连续动作永远只会触发一次 函数节流是指一定时间内执行的操作只执行一次 也就是说即预先设定一个执行周期 当调用动作的时刻大于等于执行周期则执行该动作 然后进入下一个新周期 一个比较形象的例子是如果将水龙头拧紧直到水是以水滴的形式流出 那你会发现每隔一段时间 就会有一滴水流出

1.什么是防抖节流

函数防抖(debounce) 是指在一定时间内,在动作被连续频繁触发的情况下,动作只会被执行一次,也就是说当调用动作过n毫秒后,才会执行该动作,若在这n毫秒内又调用此动作则将重新计算执行时间,所以短时间内的连续动作永远只会触发一次。

函数节流 是指一定时间内执行的操作只执行一次,也就是说即预先设定一个执行周期,当调用动作的时刻大于等于执行周期则执行该动作,然后进入下一个新周期,一个比较形象的例子是如果将水龙头拧紧直到水是以水滴的形式流出,那你会发现每隔一段时间,就会有一滴水流出。

函数节流(throttle)与 函数防抖(debounce)都是为了限制函数的执行频次,以优化函数触发频率过高导致的响应速度跟不上触发频率,出现延迟,假死或卡顿的现象。

区别:

防抖是将多次执行变成最后一次执行;而节流是将多次执行变为每隔一段时间执行一次。

  • 短信验证码
  • 提交表单
  • resize 事件
  • input 事件(当然也可以用节流,实现实时关键字查找)

节流

  • scroll 事件,单位时间后计算一次滚动位置
  • input 事件(上面提到过)
  • 播放事件,计算进度条

2.vue中使用防抖节流

2.1.函数封装

// 防抖 export function _debounce(fn, delay) { var delay = delay || 200; var timer; return function () { var th = this; var args = arguments; if (timer) { clearTimeout(timer); } timer = setTimeout(function () { timer = null; fn.apply(th, args); }, delay); }; } // 节流 export function _throttle(fn, interval) { var last; var timer; var interval = interval || 200; return function () { var th = this; var args = arguments; var now = +new Date(); if (last && now - last < interval) { clearTimeout(timer); timer = setTimeout(function () { last = now; fn.apply(th, args); }, interval); } else { last = now; fn.apply(th, args); } } }

2.2.在需要使用的组件中引用

import { _debounce } from "..."

2.3.使用

 methods: { // 改变场数 changefield: _debounce(function(_type, index, item) { // do something ... }, 200) }

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/227314.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午9:35
下一篇 2026年3月16日 下午9:35


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号