防抖函数与节流函数

2023-06-14  本文已影响0人  我没叫阿

防抖(debounce)

        function debounce(fn, delay) {
            // 定义一个定时器
            let timer = null

            return function () {
                // 取消上一次的定时器
                if (timer) clearTimeout(timer)
                // 延迟多少秒执行传进来的函数方法
                timer = setTimeout(() => {
                    fn()
                }, delay)
            }
        }

        let input = document.getElementById('input')
        input.addEventListener('input', debounce(changeValue, 2000))

        function changeValue() {
            console.log('改变输入框');
        }

节流(throttle)

        function throttle(fn, delay) {
            // 定义一个定时器
            let timer = null

            return function () {
                if (!timer) {
                    timer = setTimeout(() => {
                        fn()
                        timer = null
                    }, delay)
                }
            }
        }

        let box = document.getElementById('box')
        box.addEventListener('touchmove',throttle(moveBox,2000))

        function moveBox() {
            console.log('移动了');
        }
上一篇下一篇

猜你喜欢

热点阅读