input debounce

input debounce项目背景是一个搜索框,不能实时的监听onChange事件去发送请求,这样会造成服务器的压力解决思路就是用setTimeout+clearTimeout普通js代码如下:/下面是普通的js实现,可以参考一下//获取input元素vartextInput=document.getElementById(‘test-input’);//初始化一个…

大家好,又见面了,我是你们的朋友全栈君。

项目背景是一个搜索框,不能实时的监听onChange 事件去发送请求,这样会造成服务器的压力

解决思路就是用 setTimeout + clearTimeout

普通js代码如下:

 

/ 下面是普通的js实现,可以参考一下
// 获取input元素
var textInput = document.getElementById('test-input');

// 初始化一个定时器函数
var timeout = null;

textInput.onkeyup = function (e) {
    // 不断重置定时器函数
    clearTimeout(timeout);
    // 500ms内没任何其他输入,获取debounce之后的结果
    timeout = setTimeout(function () {
        console.log('Input Value:', textInput.value);
    }, 500);
};


  react 项目中的处理:

代码如下:

let timer = null


if(timer){
            clearTimeout(timer)
        }
        timer = setTimeout(()=>{
            fetch("http://baidu.com",{
                method:'POST',
                body: JSON.stringify(body),
                headers: {
                    'Content-Type': 'application/json',
                    'Accept': 'application/json',
                },
            }).then((result)=>{
                return result.json()
            }).then((res)=>{
                console.log("F209")
                console.log(res)
                if(time>this.state.time){
                    this.setState({
                        time:time,
                        fundList:res.fundList
                    })
                    if(res.fundList===null){
                        this.setState({
                            show:0
                        })
                    }else{
                        this.setState({
                            show:1
                        })
                    }
                }
            }).catch(err=>
                console.log(err)
            )
        },500)

  

lodash中也提供了debounce函数可以有时间看一下。

转载于:https://www.cnblogs.com/keleyz/p/9640905.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/151590.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • cacti网络监控工具完全指南

    cacti网络监控工具完全指南

    2021年8月14日
    81
  • bat批量修改文件名_bat批量修改文件夹名称不成功

    bat批量修改文件名_bat批量修改文件夹名称不成功在测试的时候,经常会遇到修改host的情况,每次都打开host手动添加,很繁琐地,怎么写个批处理文件,双击下就把host修改了呢,请看下面代码:@echooffcolor0F@attrib-r”%windir%\system32\drivers\

    2022年10月9日
    2
  • DeepFake技术–Deepfakes教程及各个换脸软件下载

    DeepFake技术–Deepfakes教程及各个换脸软件下载Deepfakes目前用于深度换脸的程序基本都是用python编程语言基于tensorflow进行计算。以下列出几款常用的换脸程序优缺点浅析,用户可以根据自己的爱好和水平来选择,以下软件均需要先安装windows版本的VS2015,CUDA9.0和CuDNN7.0.5(fakeapp教程,deepfakes视频deepfakes中文站(deepfakes.com.cn))下面几个程序的对比…

    2022年5月9日
    473
  • vmware 15 激活码【2022最新】

    (vmware 15 激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年4月1日
    138
  • GPS数据格式转换[通俗易懂]

    GPS数据格式转换[通俗易懂]经纬度格式分为三种:度、 度-分、  度-分-秒 1.)ddd.ddddd °【度.度 格式】的十进制小数部分(5位) 2.)ddd°mm.mmm’ 【度分.分 格式】的十进制小数部分(3位) NMEA数据格式为$GPGGA时,得到gps数据为(度分.分)格式 3.) ddd°mm’ss’’ 【度.分.秒 格式】 Goog

    2022年6月16日
    115
  • 三、VHDL语言基础[通俗易懂]

    三、VHDL语言基础[通俗易懂]正文:1VHDL简介VHDL的全称为VHSIC硬件描述语言(VHSICHardwareDescriptionLanguage),VHSIC:VeryHighSpeedIntegra

    2022年7月2日
    23

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号