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)


相关推荐

  • java在用SimpleDateFormat格式化时间时月份出现奇怪值[通俗易懂]

    这两天在做课设,关于图书管理系统的,其中在借书的记录中,时间记录的月份总是出现不正常的数值,大于12经常四十几五十几,经过对借书模块的跟踪,最后将错误定位到了时间格式化的这行代码SimpleDateFormat f = newSimpleDateFormat(“yyyy-mm-dd HH:mm:ss”);经过这行代码是要将格式化为常见的2013-07-11 09:07:20这种格式,结果经

  • java输出结果保留两位小数,经典好文

    java输出结果保留两位小数,经典好文前言面试技巧另外开篇再说,先上面试干货吧。面试的题目并不一定有严格的顺序关系,有的是从前一个问题延伸而来,(探究的是一个知识的深度),有的是考察面试者的知识广度、有的纯粹是我想到哪里写到哪里的啦。。不要太在意哈,最近工作有点忙。基础知识RabbitMQ是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据,它是使用Erlang语言来编写的,并且是基于AMQP协议的;RabbitMQ高性能的原因Erlang语言在交换机的交互方面性能优秀的(Erlang语言最初在于交换机领域

  • strstr()函数的使用说明(C语言)

    strstr()函数的使用说明(C语言)头文件<string.h>函数作用:1、strstr()函数搜索一个字符串在另一个字符串中的第一次出现。2、找到所搜索的字符串,则该函数返回第一次匹配的字符串的地址;3、如果未找到所搜索的字符串,则返回NULL。函数原型:char*strstr(char*str1,constchar*str2);//返回值为字符型指针str1:被查找目标…

    2022年10月15日
  • 线程同步和锁_自旋锁的实现

    线程同步和锁_自旋锁的实现一什么是自旋锁自旋锁(Spinlock)是一种广泛运用的底层同步机制。自旋锁是一个互斥设备,它只有两个值:“锁定”和“解锁”。它通常实现为某个整数值中的某个位。希望获得某个特定锁得代码测试

  • 进程间通信方式——消息队列

    进程间通信方式——消息队列与消息队列的三个数据结构;和消息队列相关的函数;消息队列的工作模式。

  • Java web实现video播放

    Java web实现video播放javaweb实现video播放1.前端的实现通过getQueryVariable获取url的参数(vid)functiongetQueryVariable(variable){varquery=window.location.search.substring(1);varvars=query.split(“&”);for(v…

发表回复

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

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