防抖(debounce)、节流(throttle)及使用场景

17 篇文章 1 订阅

防抖:在事件被触发的n秒后再执行回调,如果在这n秒内又被触发,则重新计时,核心在于清零,最后一次有效。使用场景: 窗口resize事件,搜索框输入联想
节流:在单位时间内,只能触发一次函数。如果这个单位时间内触发多次函数, 只有第一次有效,核心在于开关锁。使用场景:多次点击按钮,页面滚动事件。

  1. 节流 throttle
/**
 * 节流--点击事件、浏览器滚动事件。第一次有效
 * @param {Function} func 需要节流的函数
 * @param {Int} wait 等待时间,默认500ms
*/
export const throttle = (fn, wait = 500) => {
    var timer = null
    return function (...args) {
        if (timer) return
        fn.apply(this, args)
        timer = setTimeout(() => {
            clearTimeout(timer)
            timer = null
        }, wait)
    }
}
  1. 防抖 debounce
/**
 * 防抖--搜索框输入,窗口resize事件。最后一次有效
 * @param {Function} func 需要防抖的函数
 * @param {Int} wait 等待时间,默认500ms
 */
export const debounce = (fn, wait = 500) => {
    var timer = null
    return function (...args) {
        clearTimeout(timer)
        timer = setTimeout(() => {
            fn.apply(this, args)
        }, wait)
    }
}

在vue项目中的使用
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值