码迷,mamicode.com
首页 > 其他好文 > 详细

函数节流

时间:2021-07-15 19:02:29      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:timer   fun   top   charset   lan   lin   width   调用   date   

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        html,body{
            height: 300%;
            /* background:-webkit-linear-gradient(top left,lightblue,lightgreen,orange ); */
            background: #fff;
        }
 
    </style>
</head>
<body> 

    <script>

        /**
         * (节流) 在一段频繁操作种,可以触发多次,触发频率由自己指定
         *  func 执行函数
         *  wait  number 设置频繁操作的时间
         * 
         * @return  
         *    可以被调用的 函数
         * */   
        function throttle(func,wait = 300){
            let timer = null,
                previous = 0;  // 记录上一次操作的时间
            return function anoymous(...params){
                let now = new Date(),
                    remainong = wait - (now - previous); // 记录还差多久达到触发的频率 
                if(remainong <= 0){
                    // 两次操作的间隔时间已经超过wait 
                    window.clearTimeout(timer)
                    timer = null
                    previous = now
                    func.call(this,...params)
                }else if(!timer){
                    // 两次操作的间隔时间 还不符合触发频率
                    timer = setTimeout(()=>{
                        timer = null
                        previous = new Date()
                        func.call(this,...params)
                    },remainong)
                }
            }    
        }
 
        function handle(){ 
            console.log(‘ok‘); 
        }

        window.onscroll = throttle(handle,500) // 控制频率 300ms 触发一次
 
    </script>
</body>
</html>

函数节流

标签:timer   fun   top   charset   lan   lin   width   调用   date   

原文地址:https://www.cnblogs.com/eric-share/p/15016500.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!