20180730-20180803 节流和防抖

 先上代码

//防抖
// 将会包装事件的 debounce 函数
function debounce(fn, delay) {
  // 维护一个 timer
  let timer = null;

  return function() {
    // 通过 ‘this’ 和 ‘arguments’ 获取函数的作用域和变量
    let context = this;
    let args = arguments;

    clearTimeout(timer);
    timer = setTimeout(function() {
      fn.apply(context, args);
    }, delay);
  }
}
//节流
var throttle = function(func,delay){
    var prev = Date.now();
    return function(){
        var context = this;
        var args = arguments;
        var now = Date.now();
        if(now-prev>=delay){
            func.apply(context,args);
            prev = Date.now();
        }
    }
}
// 当用户滚动时被调用的函数
function foo() {
  console.log('You are scrolling!');

}
window.addEventListener('scroll', debounce(foo, 2000));
window.addEventListener('scroll', throttle(foo, 2000));

节流和防抖其实都是为了性能而使用的 

假如领导让你写一个搜索界面,在搜索框里肯定不能每多一个字符就要向后台搜索一遍吧?这样不仅影响性能,用户体验也不会多好。

防抖就这样出现了, 简单来看就是加了个定时器,在停止了一段时间之后执行需要的方法。

节流有点类似,简单来看是隔一段时间执行需要的方法。

(感觉太简单了实在没什么好说的。。。知道原理就好,两个词有点容易混淆)

 

posted on 2018-08-06 14:04  要一份黄焖鸡  阅读(75)  评论(0编辑  收藏  举报

导航