美文网首页
防抖和节流

防抖和节流

作者: wade3po | 来源:发表于2019-02-05 09:22 被阅读32次

在JavaScript中,防抖和节流其实是一个很重要的概念。主要应用场景就是会频繁触发的事件。比如监听滚动、比如点赞功能,总不能点一次赞就向后台发送一次数据,这时候就要用到防抖和节流。

防抖和节流的核心就是定时器,我们要知道定时器的一个概念,就是在定时之后,在没触发之前清除定时器,这个定时器方法不会被触发。

防抖最简单例子:

var t;
window.addEventListener('scroll',function(e){
if(t) clearTimeout(t);
t = setTimeout(function(){
console.log(96)
},500);
});

监听scroll,当滑动的时候就判断是否有定时器,如果有,就清除定时器,重新设定一个定时器,直到不再滑动就执行定时器的方法。

上面的方法有一个全局的变量t,我们可以用闭包的方式:

window.addEventListener('scroll',function(e){
var t;
return function(){
if(t) clearTimeout(t);
t = setTimeout(function(){
console.log(96)
},500);
}
}());

一般防抖就能符合大部分频繁触发的场景了,也有比较特殊的情况,图片懒加载的时候,虽然在一直滑动,但是因为滑动之后我们相应的还是需要加载图片,不可能等到不滑动了加载所有图片,所以会用到节流,一定时间内还是会执行方法。

节流使用场景就是频繁触发一个事件,我们用了防抖,只会在停止触发的时候执行一次,但是在频繁触发情况下还是需要执行某个方法,这时候就要用到节流。

节流简单例子

var startTime = Date.now(); //开始时间
var time = 2000; //间隔时间
var timer;
window.onscroll = function throttle(){
    var currentTime = Date.now();
    if(currentTime - startTime >= time){
        var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
        console.log('滚动条位置:' + scrollTop);
        startTime = currentTime;
    }else{
        clearTimeout(timer);
        timer = setTimeout(function () {
            throttle()
        }, 50);
    }
}

因为还是太菜,节流闭包方式还是没办法封装成功,但是大致思路就是这样,可以自己运行一下代码。

欢迎关注Coding个人笔记 公众号

相关文章

  • 谈谈js中的节流和防抖函数

    关于节流和防抖,这篇文章说的很好了,深入lodash源码分析防抖和节流深入篇 | Lodash 防抖和节流是怎么实...

  • JavaScript防抖和节流

    1. 认识防抖和节流 1.1. 对防抖和节流的认识 防抖和节流的概念其实最早并不是出现在软件工程中,防抖是出现在电...

  • 前端性能优化-浅谈js防抖和节流

    浅谈js防抖和节流

  • Javascript 基础

    1、函数防抖和函数节流 【《javascript高级程序设计》里,函数节流是这里讲的函数防抖。】函数防抖: 在事件...

  • js 防抖 节流

    节流 防抖1 防抖2

  • 2019-03-27

    js的防抖和节流 据我所知防抖和节流都是为了优化作用,减轻浏览器和服务端的负担,防抖和节流俩个的英文要记住: de...

  • js的防抖和节流

    js的 防抖(debounce)和 节流(throttle ) 防抖和节流一般用于高频触发事件,属于浏览器性能优化...

  • 手写防抖和节流函数实现

    1. 认识防抖和节流函数 防抖和节流的概念其实最早并不是出现在软件工程中,防抖是出现在电子元件中,节流出现在流体流...

  • 实现防抖和节流

    一、认识防抖和节流函数 防抖和节流的概念其实最早并不是出现在软件工程中,防抖是出现在电子元件中,节流出现在流体流动...

  • 2019-04-24关于节流和防抖

    节流: 应用场景: 防抖: 应用场景: 1.节流 2.防抖

网友评论

      本文标题:防抖和节流

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