阅读 185

函数防抖和节流的区别和代码实现

js函数防抖和节流的区别

函数防抖:触发高频事件后n秒内函数只会执行一次,如果n秒内高频事件再次被触发,则重新计算时间。例如游戏角色放技能被打断了,然后重新释放技能,重新计算释放时间。 函数节流:高频事件触发,但在n秒内只会执行一次,所以节流会稀释函数的执行频率。就相当于游戏角色有霸体释放技能无法被打断。3秒一个技能,不管中间发生了什么。

防抖函数

function debounce(fn, delay) {
    var timer = null;
    return function() {
        clearTimeout(timer);
        var that = this,
            args = arguments;
        timer = setTimeout(function() {
            fn.apply(that, args)
        }, delay)
    }
}复制代码

一般用于input或者srcoll事件上。输入框搜索防止输入过快向后端发很多个请求,就是限制多长时间才能执行一次。重复操作会重新计算时间。

节流函数

function throttle(fn, delay) {
    var timer = null,
        flag = false;
    return function() {
        if (flag) {
            return
        } 
        flag = true
        var that = this,
            args = arguments;
        timer = setTimeout(function() {
            clearTimeout(timer);
            flag = false
            fn.apply(that, args)
        }, delay)
    }
}复制代码

一般用于mousemove或者resize事件上,避免触发N次事件,限制多少毫秒内只能执行一次,提高性能。


作者:蓝胖纸FE
链接:https://juejin.cn/post/7027728685591429134


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐