zoukankan      html  css  js  c++  java
  • 函数防抖和节流

    1. 函数防抖(事件频繁触发,在特定时间内,函数只被触发一次, 如果在特定时间内,不断被触发,则会重新计算时间)

       

       <button id="btn1">防抖</button>
    
     // 防抖
            function getData() {
                console.log(1111);
            }
            const debounce = (fn, delay = 300) => {
                let timer = null;
                return (...args) => {
                    if (timer) {
                        clearTimeout(timer)
                    }
                    timer = setTimeout(() => {
                        fn.apply(this, args)
                    }, delay)
                }
            }
            let btn1 = document.getElementById('btn1')
            btn1.addEventListener('click', debounce(getData, 500))
     
     2. 函数节流 (事件频繁被触发, 在特定时间内,只触发一次, 若在单位时间内, 触发多次, 只要一次生效)
         
     <input id="search" type="text" name="search">
        
    // 节流
            function queryData(text) {
               console.log('搜索' + text);
            }
            const throttle = (fn, delay = 300) => {
                let flag = false;
                return (...arg) => {
                    if (flag) return;
                    flag = true;
                    setTimeout(() => {
                        fn.apply(this, arg);
                        flag = false;
                    }, delay);
                }
            }
            const search = document.getElementById('search');
            const throttleFn = throttle(queryData, 500);
            search.addEventListener('keyup', (event) => {
                throttleFn(event.target.value)
            })

    若有不对的地方, 请指出...
  • 相关阅读:
    read 命令详解
    rpm 命令详解
    random 模块
    time 模块
    Numpy 数据类型和基本操作
    numpy 数组对象
    netstat 命令详解
    free 命令详解
    Python中*args和**kwargs 的简单使用
    Numpy 数组简单操作
  • 原文地址:https://www.cnblogs.com/big--Bear/p/12165575.html
Copyright © 2011-2022 走看看