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

防抖和节流

时间:2019-12-04 01:05:32      阅读:93      评论:0      收藏:0      [点我收藏+]

标签:事件   搜索   pre   input框   用户   return   set   span   listen   

最近在面试的时候有一面试题是关于防抖节流的,回来加强了一下,做以下总结,希望对大家有所帮助!

先来说一下防抖和节流的应用场景

  防抖 - debounce:

         1、input框输入时,可以使用防抖节约资源的请求,比如搜索框

    2、window触发resize时,当用户停止改变窗口的大小时,再触发事件

   节流 - throttle:

   1、 scroll滚动事件

   2、鼠标不断点击,mouseover事件等

 

下面用一个scroll事件,来实现以下节流和防抖吧

        // 防抖
        function debounce(fn,wait) {
            var timeout = null
            return function() {
                if(timeout !== null) clearTimeout(timeout)
                timeout = setTimeout(fn,wait)
            }
        }
        function handle() {
            console.log(Math.floor(Math.random()*100))
        }
        window.addEventListener(‘scroll‘,debounce(handle,1000))
                  
       //节流
        function throttle(func,delay) {
            var timer = null
            return function() {
                var that= this
                var args = arguments
                // 定时器不存在时,触发一个定时器,回调中清除定时器
                if(!timer) {
                    timer = setTimeout(() => {
                        func.apply(that,args)
                        timer = null
                    }, delay);
                }
            }
        } 

       function func() {
            console.log(parseInt(Math.random()*100))
        }

        window.addEventListener(‘scroll‘,throttle(func,1000))    

 

防抖和节流

标签:事件   搜索   pre   input框   用户   return   set   span   listen   

原文地址:https://www.cnblogs.com/linhongjie/p/11980246.html

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