当前位置: 首页 > news >正文

webSocket推送太快导致前端渲染卡顿问题优化

优化思路:
把webSocket接收到的数据用一个数组存起来,达到一定长度再统一渲染,可根据推送数据的速度适当调解数组长度限制,如果一段时间内改数组长度打不要渲染条件,就用定时器之间渲染

data() {return {tempDataWsList: [], // 存放临时ws数据数组list: [], // 页面上的列表listCopy: [], // 深拷贝的初始化列表数据,用于统一渲染}
}
methods: {...// websocket接收数据的方法onMessage(data) {if (data.data) {// 将Json字符串转译const dataWs = JSON.parse(data.data);// 将转译后的数据推入临时ws数据数组中this.tempDataWsList.push(dataWs);// 有ws数据就关闭定时器clearTimeout(this.wsTimeout);// 做缓存渲染,将ws接收到的数据放到数组,满10个就统一渲染if (this.tempDataWsList.length == 10) {this.handleList();} else {// 如果最后一个接收后1秒钟内不能满足10个,则直接渲染this.wsTimeout = setTimeout(() => {this.handleList();}, 1000);}}},// 操作数据渲染handleList() {// 循环临时ws数据数组this.tempDataWsList.forEach(temp => {// 循环深拷贝的初始化列表数据this.listCopy.forEach(item => {// 循环判断列表对应ws数据id,修改深拷贝列表上的值item.pointDetails.forEach(item1 => {if (item1.id == temp.detailsId) {item1.value = temp.realVal;}});});});// 清空临时ws数据数组this.tempDataWsList = [];// 将修改的列表数据赋值给页面渲染this.list = this.listCopy;}
}

相关文章:

  • Ubuntu上安装 Chrome 浏览器
  • Object转List<>,转List<Map<>>
  • 一分钟理解npm run dev 和 npm run serve
  • 时序分解 | Matlab实现EEMD集合经验模态分解时间序列信号分解
  • 整理的一些Java细节问题
  • 轻量封装WebGPU渲染系统示例<14>- 多线程模型载入(源码)
  • linux环境下编译,安卓平台使用的luajit库
  • 七、W5100S/W5500+RP2040树莓派Pico<UDP 组播>
  • VSCode中的任务什么情况下需要配置多个问题匹配器problemMatcher?多个问题匹配器之间的关系是什么?
  • rust入门基础案例:猜数字游戏
  • Qt for Android代码中输出日志
  • Kubernetes群集调度
  • 基于ASP.NET MVC + Bootstrap的仓库管理系统
  • Ubuntu20.04下安装Redis环境
  • ElasticSearch集群架构实战及其原理剖析
  • 《深入 React 技术栈》
  • AHK 中 = 和 == 等比较运算符的用法
  • Android 控件背景颜色处理
  • Hibernate最全面试题
  • HTTP那些事
  • HTTP请求重发
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • JS基础之数据类型、对象、原型、原型链、继承
  • magento 货币换算
  • STAR法则
  • 阿里云购买磁盘后挂载
  • 服务器从安装到部署全过程(二)
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 强力优化Rancher k8s中国区的使用体验
  • 什么是Javascript函数节流?
  • 思维导图—你不知道的JavaScript中卷
  • 我感觉这是史上最牛的防sql注入方法类
  • 想写好前端,先练好内功
  • 写代码的正确姿势
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • #ifdef 的技巧用法
  • #NOIP 2014# day.2 T2 寻找道路
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (二)Linux——Linux常用指令
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (三十五)大数据实战——Superset可视化平台搭建
  • (算法)Travel Information Center
  • (一)Thymeleaf用法——Thymeleaf简介
  • (转)ORM
  • (转)Scala的“=”符号简介
  • (转)shell调试方法
  • (转)程序员技术练级攻略
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • **CI中自动类加载的用法总结