函数节流的简单调用

函数节流

在指定时间内只触发一次,防止频繁触发
如scroll事件

//参数
//fn        事件触发执行的函数
//delay     距离下一次触发时间

//调用throttle函数,当thrttle执行后active会保存在内存中
//同时会返回一个函数出来
throttle(fn, delay) {
    let active = true;

    return function(...params) {
        if (!active) {
            return
        }
        active = false;
        setTimeout(function() {
            fn.apply(this, params);
            active = true;
        }, delay);
    }
}

函数节流调用

    let box = document.querySelector('.box');
    
    box.onclick = throttle(() => {
        console.log('我点击了box')
    }, 200)

教学版本

function fn( func,delay,mustExec ){
    var timer = null;
    var start = new Date();

    return function(){
        clearTimeout( timer );

        if( new Date()-start > mustExec ){
            func();
            start = new Date();
        }else{
            timer = setTimeout(function(){
                func();
            },delay)
        }
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 事件的触发权很多时候都属于用户,有些情况下会产生问题: 向后台发送数据,用户频繁触发,对服务器造成压力 一些...
    浪里行舟阅读 1,346评论 0 10
  • 先来一张图: 每一条竖线都代表着一次函数调用(如鼠标mousemove事件,input输入事件等)正常执行的时候,...
    啊灿2580阅读 182评论 0 0
  • 前言 事件的触发权很多时候都属于用户,有些情况下会产生问题:1.向后台发送数据,用户频繁触发,对服务器造成压力2....
    smallTigerZ阅读 301评论 0 0
  • 说到「函数防抖」和「函数节流」,两者其实概念比较相似。 1.「函数防抖」(debounce)通俗来说,就是把「多个...
    Jason_Shu阅读 656评论 0 0
  • 前言 浏览器中某些计算和处理要比其他的昂贵很多。例如DOM操作比DOM交互需要更多的时间和cpu时间,为了提升性能...
    蛙哇阅读 1,239评论 0 0