首页
关于
Search
1
sql的注入原因和解决办法
134 阅读
2
SpringBoot整合腾讯云存储COS及基本使用,增删改查......
108 阅读
3
深究contains方法
100 阅读
4
多线程概述
73 阅读
5
学习的第一个注解@WebServlet - JavaWeb
73 阅读
默认分类
Java
C/C++
Mysql
JavaWeb
SpringBoot
算法
前端
Search
标签搜索
Spring
HTTP
Java
JavaWeb
IOC
mybatis
腾讯云
COS
云存储
CDN
achong
累计撰写
25
篇文章
累计收到
2
条评论
首页
栏目
默认分类
Java
C/C++
Mysql
JavaWeb
SpringBoot
算法
前端
页面
关于
搜索到
1
篇与
前端
的结果
2023-02-19
对文本框监听事件的优化,时间换性能。
正常情况下,js对文本框控件正常的监听是这样子的。// 对id为 #content 的控件添加文本修改事件 $(document).on("input propertychange","#content",function(res){ var newValue = $("#content").val(); console.log(newValue) }); 可以正常监听文本的变化。但是,太过灵敏了,某些情况下可能不适合。 比如这样一个需求:网页有一个实时同步功能的文本框,文本框内的数据需要实时发送到服务器存储,以便下一次展现。 在打字的情况下,每按下一个字母,都会触发一次文本修改。如果修改监听的回调函数里面是向服务器发送请求的话,即使用户在正常的字的情况下,对服务器来说像是遭受CC攻击了一样,频率太快了。 所以,我对代码进行了改进,时间精度换性能。var n = 0; $(document).on("input propertychange", "#content", function(res){ // 设置文本框监听 var nn = ++n; setTimeout(function(){ if (n != nn) return; UpData(); }, 1000); }); 通过对比文本修改次数来判断需不需要向服务器发送数据。上面代码中定义了两个变量,一个变量n在外面记录 回调函数 文本变化的次数;另一个临时变量nn记录在 回调函数 执行的那一刻文本变化次数。在 回调函数 里用setTimeout来定时2秒执行一个函数,1秒后,如果内外两个记录文本修改次数的变量相同,则向服务器发送数据,否则直接结束本次执行。 如此循环往复,当用户真正停下来,或者用户暂停撰写时,才往服务器发送本次修改的文本。虽然文本不是真正的实时发送,但是慢一两秒对这个需求来说不是很重要。所以说是时间换性能。
2023年02月19日
10 阅读
0 评论
0 点赞