首页 > 其他分享 >js | 防抖&&节流

js | 防抖&&节流

时间:2022-08-13 19:45:56浏览次数:57  
标签:function 触发 防抖 const 节流 js && fn


正常:事件触发非常频繁,每一次触发,回调函数都会执行,如果时间很短,回调函数中有计算,有可能会出现浏览器卡顿
防抖:前面所有的触发都会取消,最后一次的执行在规定的时间之后才会触发频繁触 => 只执行一次
节流:在规定的时间间隔范围内,不会触发多次回调,只有大于这个时间才会触发回调。频繁触发 => 少量触发
实现方式: 1、可以使用第三方 lodash 插件【lodash向外暴露的是_.+函数名()】

_.debounce(fn,waitTime,option)  // 防抖
_.throttle(fn,waitTime,option)  // 节流

2、自己封装

//防抖
function debounce(fn, delay) {
    let timer = null
    const _debounce = function () {
        if (timer) {
            clearTimeout(timer)
        }
        timer = setTimeout(() => {
            fn()
        }, delay) }
    return _debounce
}
//节流
function throttle(fn, interval) {
    let lastTime = 0
    const _throttle = function () {
        const nowTime = new Date().getTime()
        // console.log(new Date(nowTime));
        const remainTime = interval - (nowTime - lastTime)
        if (remainTime <= 0) {
            fn() lastTime = nowTime
        }
    }
    return _throttle
}

 

标签:function,触发,防抖,const,节流,js,&&,fn
From: https://www.cnblogs.com/wjl1124/p/16583872.html

相关文章

  • JS之事件下
    event(事件源)在事件中,当前操作的那个元素就是事件源,比如网页元素中input有onclick事件,当点击input发送onclic事件时,事件源就是input。事件源是作为event对象的属性存在的......
  • js中es5及es6部分内容
    ES5及ES6es表示ECMASCript,他是从es3,es5,es6,es5是2009.12月发布的,es6是2015.6月发布的。vue2完全支持es5的(vue3完全支持es6的),react完全支持es6es5的新特性严格模式(对应的......
  • nodemon 调试nodeJS的使用方法
    首先你需要全局安装nodemon ,然后要做一个launch.json的配置:{"version":"0.2.0","configurations":[{"name":"Launchserver.js......
  • JS高级知识点大全
    正则表达式正则表达是英文RegExp正则字面量写法/利用构造函数方式,创建一个正则对象,能否匹配所有单个数字newRegExp('\\d','g')正则表达式修饰符:忽略大写-->i;全......
  • ExtJS - Router(路由)
    更新记录转载请注明出处:https://www.cnblogs.com/cqpanda/p/16581944.html2022年8月13日发布。2022年7月26日从笔记迁移到博客。ExtJS教程汇总:https://www.cnblogs......