前端优化之-防抖与节流操作

84 阅读1分钟

防抖

防抖(debounce)是指在高频事件中,事件被触发n秒后再执行回调,若在n秒内被重新触发,则重新计时。

原生js代码实现:

        /*

        定义防抖函数,

        1.再次触发事件时,计数器会重新计时。

        2.当该时间delay内没有触发事件,则执行ajax函数。

        */
        var time = null;

        function debounce(delay){

            if(time){

                clearInterval(time);

            }

            time = setTimeout(()=>{

                console.log('执行函数');

            },delay)

        }

节流

节流(throttle)是指在高频事件中,在指定时间段内,只触发一次。

原生js代码实现:

        /*

        定义节流函数,

        1.再次触发事件时,若在时间delay范围内,则执行ajax函数。

        2.若在时间delay范围外,则执行ajax函数。

        */

        var stateTime = true;// stateTime为当前调用是否在执行。

        function throttle(delay){

            // 如果定时器存在,则不调用函数

            if(!stateTime){

                return false;

            }

            stateTime = false;

            setTimeout(()=>{

                console.log('执行函数');

                stateTime = true;

            },delay)

        }