zoukankan      html  css  js  c++  java
  • 防抖节流简单用法

    import React, { useState, useEffect } from 'react';
    import _ from 'lodash'
    
    // 防抖案例
    // 比如说搜索功能。他是把上一次的id值清空, 每隔多少秒再去请求后台
    let id = ''
    
    export default function Debounce() {
    
      //防抖 触发事件后在 n 秒内函数只能执行一次,如果在 n 秒内又触发了事件,则会重新计算函数执行时间
      // const onChange = event => {
      //   const values = event.target.value
    
      //   id && clearTimeout(id)
    
      //   id = setTimeout(() => {
      //     console.log('请求后台', values)
      //   }, 500)
      // }
    
      //节流   连续触发事件,但是在 n 秒中只会执行一次函数
      //判断如果id值为空,就进入,然后把settimeout值赋值给id,  在settimeout里把id值清空。 每隔多少秒去请求一次后台。
      const onChange = event => {
        const values = event.target.value
    
        if (!id) {
          id = setTimeout(() => {
            id = null
            console.log('请求后台', values)
          }, 500)
        }
      }
      //防抖
      const debounce = _.debounce(() => console.log('防抖'), 3000)  
      //节流  trailing设置过期时间 最后一次没够多少秒。他也会输出一次
      const throttle = _.throttle(() => console.log('节流') , 3000, { trailing: true })
    
      return (
        <div>
         <input type="text" onChange={onChange} />
    
         <input type="text" onChange={throttle} />
        </div>
      );
    }
    

      

  • 相关阅读:
    何谓算法
    大规模Web服务开发技术
    什么是依赖,什么是抽象
    智能Web算法
    算法评测
    好代码、坏代码之四
    SVN server setup 1
    Python正则表达式操作指南(re使用)(转)
    rpm package installation
    mysql install error:Make had returned bad status, install seems impossible
  • 原文地址:https://www.cnblogs.com/yetiezhu/p/13144047.html
Copyright © 2011-2022 走看看