函数节流

Posted hyshi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数节流相关的知识,希望对你有一定的参考价值。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div{
            height: 10000px;
        }
    </style>
</head>
<body>
    <div></div>
    

    <script>
        function throttle(fn, wait) {
            let _fn = fn, // 保存需要被延迟的函数引用
                timer,
                flags = true; // 是否首次调用

            return function() {
                let args = arguments,
                    self = this;
                if (flags) { // 如果是第一次调用不用延迟,直接执行即可
                    _fn.apply(self, args);
                    flags = false;
                    return flags;
                }
                // 如果定时器还在,说明上一次还没执行完,不往下执行
                if (timer) return false;
                timer = setTimeout(function() { // 延迟执行
                    clearTimeout(timer); // 清空上次的定时器
                    timer = null; // 销毁变量
                    _fn.apply(self, args)
                }, wait)
            }
        }

        window.onscroll = throttle(function() {
            console.log(22)
        }, 500)
    </script>
</body>
</html>

 

以上是关于函数节流的主要内容,如果未能解决你的问题,请参考以下文章

函数节流

函数防抖和节流*(性能优化不错的选择)

函数的节流

JavaScript性能优化8——防抖与节流

JavaScript性能优化8——防抖与节流

js函数节流