函数防抖与节流

大兔子大兔子 提交于 2020-02-11 14:12:48
<!DOCTYPE html>
<html lang="zh">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <button id="throttle">节流</button>
    <button id="debounce">防抖</button>
    <script>
        function throttle(callback, delay) {
            let start = 0
            return function (...args) {
                const current = Date.now()
                if (current - start > delay) {
                    start = current
                    callback.apply(this, args)
                }
            }
        }
        function debounce(callback, delay) {
            return function (...args) {
                if (callback.timeoutId) {
                    clearTimeout(callback.timeoutId)
                }
                callback.timeoutId = setTimeout(() => {
                    delete callback.timeoutId
                    callback.apply(this, args)
                }, delay)
            }
        }
        function handlerClick() {
            console.log('---')
        }
        document.getElementById('throttle').onclick = throttle(handlerClick, 2000)
        document.getElementById('debounce').onclick = debounce(handlerClick, 2000)
    </script>
</body>

</html>

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!