JS高级篇

  1. 防抖
  2. 节流

防抖

只响应最后一次操作

怎么理解:事件会在设定的延时时间后执行,如果在时间内重新触发该事件,则重新计时
案例:英雄联盟 -> 回城
应用场景:input输入框输入事件触发
提示:设定的时间内不一定能够执行一次事件,如回城,一直疯狂按回城键,永远无法回城

 /**
     *
     * @param func 要防抖的函数
     * @param millisecond 时间间隔
     */
    function debounce(func, millisecond) {

        let timer = null;
        return () => {
            if (timer) {
                clearTimeout(timer);
            }
            timer = setTimeout(() => {
                func();
            }, millisecond);
        }
    }


节流

相同的时间内,只执行一次操作

怎么理解:每间隔一定时间,触发一次操作,时间内继续触发,则不会执行
案例:英雄联盟 -> 技能CD (每多少秒才能放一次技能,技能释放后进入cd,无法释放)
应用场景:表单提交,鼠标移动事件等

 /**
     *
     * @param func 节流函数
     * @param millisecond 时间间隔
     */
    function throttle(func, millisecond) {
        let timer = null;
        return () => {
            if (!timer) {
                timer = setTimeout(() => {
                    func();
                    timer = null;
                }, millisecond);
            }
        }
    }

总结

每天记录一点,从小小菜鸟变小菜鸟!!!


版权声明:本文为King0217原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。