zoukankan      html  css  js  c++  java
  • JS的防抖与节流学习笔记

    防抖(debounce):当持续触发事件时,在一定的时间段内,只有最后一次触发的事件才会执行。

    例:

        function debounce(fn, wait) {
            var timer = null;
            return function() {
                if(timer !== null) {
                    clearTimeout(timer);
                }
                timer = setTimeout(fn, wait);  
            }
        }
        function handle() {
            console.log('防抖处理!'); 
        }
        window.addEventListener('scroll', debounce(handle, 1000));

    节流(throttle):当持续触发事件时,已执行的事件在一定时间段内不会再次执行。实现节流有时间戳和定时器两种方式。

    例:

    // 时间戳:
        var throttle = function(func, delay) {
            var prev = Date.now();
            return function() {
                var now = Date.now();
                if (now - prev >= delay) {
                    func();
                    prev = Date.now();
                }
            }
        }
        function handle() {
            console.log('节流处理!');
        }
        window.addEventListener('scroll', throttle(handle, 1000));
    // 定时器:
        var throttle = function(func, delay) {
            var timer = null;
            return function() {
                if (!timer) {
                    timer = setTimeout(function() {
                        func();
                        timer = null;
                    }, delay);
                }
            }
        }
        function handle() {
            console.log('节流处理!');
        }
        window.addEventListener('scroll', throttle(handle, 1000));

    函数防抖和节流都是防止某一事件被频繁触发;区别:防抖是将多次执行变为最后一次执行,节流是将多次执行变为一段时间只执行一次


    应用场景:窗口resize、页面scroll、拖拽、限时抢购、实时搜索等。

  • 相关阅读:
    改 hadoop ssh 端口
    java.lang.OutOfMemoryError: Java heap space 解决方法
    LucidGaze for Solr 搜索监测工具
    hadoop 文件浏览器
    CF1427C Solution
    技术经理必备的六个好习惯
    今天申请博客
    同志们都走了!!
    好笑
    今天看了《浅谈多态》这篇文章
  • 原文地址:https://www.cnblogs.com/fengyuexuan/p/11607756.html
Copyright © 2011-2022 走看看