美文网首页
关于节流和防抖

关于节流和防抖

作者: 九又四分之三o | 来源:发表于2018-05-01 20:30 被阅读0次

在前端开发中会遇到一些频繁的事件触发,比如:

  • window 的 resize、scroll
  • mousedown、mousemove
  • keyup、keydown
    这会导致绑定的函数频繁地执行。
    为了防止太过于频繁地执行绑定的函数,我们一般有两种解决方法:
  • 1、debounce 防抖
  • 2、throttle 节流

防抖

防抖的原理是:在事件触发n秒之后才执行函数,如果在n秒之内,又触发了这个事件,则以新的时间为准,n秒后再执行。总之,就是要触发事件n秒之内不再触发,才会执行。

function debounce(func, wait) {
    var timeout;
    return function () {
        var context = this;
        var args = arguments;
        clearTimeout(timeout)
        timeout = setTimeout(function(){
            func.apply(context, args)
        }, wait);
    }
}

节流

节流的原理:如果持续触发事件,每隔n秒执行一次事件。
有两种方式实现节流:1、时间戳;2、定时器
时间戳:

function throttle(func, wait) {
    var context, args;
    var previous = 0;

    return function() {
        var now = +new Date();
        context = this;
        args = arguments;
        if (now - previous > wait) {
            func.apply(context, args);
            previous = now;
        }
    }
}

定时器:

function throttle(func, wait) {
    var timeout;
    var previous = 0;

    return function() {
        context = this;
        args = arguments;
        if (!timeout) {
            timeout = setTimeout(function(){
                timeout = null;
                func.apply(context, args)
            }, wait)
        }

    }
}

相关文章

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

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

  • JavaScript防抖和节流

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

  • 关于节流和防抖

    在前端开发中会遇到一些频繁的事件触发,比如: window 的 resize、scroll mousedown、m...

  • 关于防抖和节流

    防抖(debounce) 描述:如果短时间内大量触发同一事件,希望在事件连续触发的过程中并不执行其回调函数,而是等...

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

    浅谈js防抖和节流

  • Javascript 基础

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

  • js 防抖 节流

    节流 防抖1 防抖2

  • 2019-03-27

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

  • js的防抖和节流

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

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

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

网友评论

      本文标题:关于节流和防抖

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