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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • date字符串转为日期_sql字符串转日期函数

    date字符串转为日期_sql字符串转日期函数首先使用System的currentTimeMillis()方法获取本地时间,在方法后面+“”,表示字符串拼接,这样就可以把时间放到只能存放St’ri

  • matlab图像处理初步,MATLAB数字图像处理初步「建议收藏」

    matlab图像处理初步,MATLAB数字图像处理初步「建议收藏」实验一MATLAB数字图像处理初步一、实验目的1、熟悉及掌握在MATLAB中能够处理哪些格式图像。(五号宋体)2、熟练掌握在MATLAB中如何读取图像。3、掌握如何利用MATLAB来获取图像的大小、颜色、高度、宽度等等相关信息。4、掌握如何在MATLAB中按照指定要求存储一幅图像的方法。5、图像间如何转化。二、实验原理1、数字图像的表示和类别一幅图像可以被定义为一个二维函数f(x,y),其中x…

  • 记一次阿里云服务器因Redis被【挖矿病毒crypto和pnscan】攻击的case,附带解决方案

    记一次阿里云服务器因Redis被【挖矿病毒crypto和pnscan】攻击的case,附带解决方案一、事情缘由前段时间给大家录制《玩转Docker》教学视频,链接请参阅https://www.bilibili.com/video/BV1BK4y1A78M,为了更好的演示,就在阿里云搞了一个云服务器,自己本地连接。 云服务器到手之后,为了可以让自己本地可以连接到阿里云服务器上就做了如下操作: 开放了ssh(port:22)端口:为了远程连接使用。 开放了剩余的其他所有端口:录制教学视频时启动了相关容器,容器的一些固定端口6379等映射到了宿主机的随机端口上,为了能从公网访问到容器的内容,就开放

  • navicat premium 激活码_通用破解码

    navicat premium 激活码_通用破解码,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • Java项目—图书馆[通俗易懂]

    Java项目—图书馆[通俗易懂]//Library.book包//book包下Book类packageLibrary.book;publicclassBook{privateStringname;privateStringauthor;privateStringid;privateintprice;privateStringtype;…

  • 遍历map的key和value_有序的map集合

    遍历map的key和value_有序的map集合Golang map实现原理是hash map(核心元素是桶,key通过哈希算法被归入不同的bucket中),key是无序的,很多应用场景可能需要map key有序(例如交易所订单撮合),C++ 的stl map 实现了key有序,实际上是TreeMap是基于树(红黑树)的实现方式,即添加到一个有序列表,在O(log n)的复杂度内通过key值找到value,优点是空间要求低,但在时…

发表回复

您的电子邮箱地址不会被公开。

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