美文网首页
函数节流

函数节流

作者: 萘小蒽 | 来源:发表于2019-04-17 10:17 被阅读0次

浏览器中DOM操作比起非DOM交互需要更多的内存和CPU时间,比如输入框的oninputkeyuponresizescroll等事件。其高频率的触发事件可能会让浏览器崩溃,为了解决这个问题,可以使用定时器对该函数进行节流。

基础形式:

var processor = {
   timeoutId : null,
   //实际进行处理的方式
   performProcessing: function(){
       //实际执行的代码
    },
   process: function (){
      clearTimeout(this.timeoutId);
      this.timeoutId = setTimeout(()=>{
         this.performProcessing()
      },1000);
   }
}
//尝试开始执行
processor.process();
  • 上面processor.process()方法就算被频繁的调用,performProcessing()也只会每过1S的执行一次。
  • 只要代码是周期性频繁执行的,应该使用节流来限制。

简化模式:

function throttle(fn, context){
    clearTimeout(fn.timeoutId);
    fn.timeoutId = setTimeout(()=>{
       fn.call(context)
     },1000)
}
  • 简化模式的throttle()接收两个参数:context(要执行的方法),fn(执行的作用域)

相关文章

网友评论

      本文标题:函数节流

      本文链接:https://www.haomeiwen.com/subject/yoavwqtx.html