input debounce

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

项目背景是一个搜索框,不能实时的监听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函数可以有时间看一下。

免责声明:文章转载自《input debounce》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇CSS——(1)基础浅析ebtables的概念和一些基本应用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

input上传图片并预览

首先说一下input 大家都知道上传文件,图片是通过input 的file进行上传的。 1. 首先是样式 大家都知道input在HTML的代码为 <input type="file">;在页面的样式是不可以更改的,如下图 但是最为一个投机取巧的前端,一切样式都是可以修改的。 效果图如下 代码: <input type="file...

找到集合 P 中的所有 ”最大“ 点的集合

题目描述 P为给定的二维平面整数点集。定义 P 中某点x,如果x满足 P 中任意点都不在 x 的右上方区域内(横纵坐标都大于x),则称其为“最大的”。求出所有“最大的”点的集合。(所有点的横坐标和纵坐标都不重复, 坐标轴范围在[0, 1e9) 内) 如下图:实心点为满足条件的点的集合。请实现代码找到集合 P 中的所有 ”最大“ 点的集合并输出。 例子:...

flask第30篇——宏macro和import标签

宏是Jinja2特有的,像Django则没有这个。 先新建一个项目macroDemo: 然后在templates文件夹中新建index.html文件,并在代码中返回渲染后的文件: 然后回到index.html,现在假设我们要写一个登录的表单: 代码: <!DOCTYPE html><html lang="en"><he...

Jquery获取列表中的值和input单选、多选框控制选中与取消

一、Jquery获取列表中的值   1、jsp页面代码    <tbody> <c:forEach var="model" items="${listRefEntity }" varStatus="status"> <tr&...

selenium---上传文件(非input标签)

前言   在前面介绍过selenium中的上传操作过程中介绍了,上传分为两种一种为input标签的,另一种为非input标签的,input标签的直接通过send_keys直接将需要上传的文件地址输入即可 非input标签上传 安静这里找到了一个关于非input标签的上传实例,然后通过pywinauto这个第三方库控制Windows控件进行完成上传操作 p...

vue 富文本编辑器 项目实战用法

1.挑个富文本编辑器 首先针对自己项目的类型,确定自己要用啥编辑器。 1.1 wangeditor 如果一般类似博客这种项目不需要花里胡哨的,功能也不要求贼多的,推荐一下wangeditor(点击跳转)。能覆盖基本上所有的常见操作,轻量化,开源,有中文文档。 ▽wangeditor效果图  1.2 tinyMCE 如果需要复杂的编辑器,推荐tinyMCE...