vue数据大屏并发请求

并发? 处理并发

因为js是单线程的,所以前端的并发指的是在极短时间内发送多个数据请求,比如说循环中发送 ajax , 轮询定时器中发送 ajax 请求. 然后还没有使用队列, 同时发送 的. 

1. Promise.all

可以采用Promise.all处理并发, 当所有promise全部成功时, 会走.then,并且可以拿到所有promise中传进resolve中的值

Promise.all([ WsApi.querySpyTaskSummary(), WsApi.querySpyTask(), ]).then((res) => { console.timeEnd(); });

2. async/await (个人喜欢用这个)

  data() {return {timer: null, // 定时器名称 队列timerRefresh: null, // 定时器 2小时刷新页面 }},mounted() {this.startTimer() // 定时发送请求获取数据并更新对象 3sthis.startTimerRefresh() // 定时刷新页面 2h // this.startDayCap()// 日产能 3s// this.startMonthCap() // 月产能 5s// this.startOnlineTime()// 在线时长(小时) 10s},beforeDestroy() {// console.log('关闭定时器')if (this.timer) {clearInterval(this.timer)clearInterval(this.timerRefresh)// clearInterval(this.timerDayCap)// clearInterval(this.timerMonthCap)// clearInterval(this.timerOnlineTime)}},methods: {// #####################################################################// 定时器 队列startTimer() {this.fetchAll() // 开始请求一次if (this.timer) clearInterval(this.timer) // 清空上一个定时器// 开启定时器this.timer = setInterval(() => {this.fetchAll() // 机器人状态汇总// 优化释放异步资源方案未使用// setTimeout(() => {//   this.fetchAll() // 机器人状态汇总// }, 0)}, 3000)},//定时刷新页面startTimerRefresh() {if (this.timerRefresh) clearInterval(this.timerRefresh)this.timerRefresh = setInterval(() => {window.location.reload(true)// 刷新console.log("刷新");}, 2 * 60 * 60 * 1000) // 2 h},//////async fetchAll() {// 日产能定时器await WeldHomeGetGroupDayCap().then(res => {// console.log(res, '日--------------');if (res.code === 200) {// // this.props_productComponent_day = {}// this.props_productComponent_day = {dataName: res.data.map(item => item.robotName),dataNum: res.data.map(item => item.realCap.toFixed(2) * 1)}// console.log(this.props_productComponent_day);} else {// this.msgError('err')}}).catch(err => {})// 月产能await WeldHomeGetGroupMonthCap().then(res => {// console.log(res, '月产能--------------');if (res.code === 200) {// // this.props_productComponent_month = {}// // const seriesData = day_xAxis_series_Data.map((item, index) => {//   return item.map(item => {//     return Number(item.rate)//   })// })this.props_productComponent_month = {robotNameList: res.data.map(item => item.robotName), // x轴seriesData: res.data.map(item => item.realCap.toFixed(2) * 1)  // y轴}} else {// this.msgError('err')}}).catch(err => {})// 放 try catch也可以的,因为有的会结合使用try {// let 变量1// let 变量2// await 1// await 2} catch (error) {// console.log(111);}}

每隔几秒请求一次接口(轮询)页面过段时间会卡死?

如果要求不高的话,最简单的就是 定时刷新, 如上边的2小时刷新方案.

当然,首先我们要排查是哪方面的错误, 后端接口的问题,还是前端代码执行顺序的问题,并发是否串行了. 等等......

eg: 某个页面放置一段时间(几分钟,几小时,几天),点不了,刷新页面也要很长时间才能响应或者不响应. 卡顿问题,只有关闭页面,重新打开才正常 ===>>> 浏览器内存堆满问题, 比较明显的,谷歌快照能看到 (performance快照、memory快照)

​​​​​​​轮询定时器 清除 + vue2.0_vue监听缓存数据变化后清除定时器-CSDN博客文章浏览阅读563次,点赞9次,收藏10次。轮询定时器 清除 + vue2.0_vue监听缓存数据变化后清除定时器https://blog.csdn.net/qq_60839348/article/details/135534331

单纯使用setInterval会使页面卡死,setTimeout自带清除缓存,组合使用实现轮询可解决浏览器崩溃 

window.setInterval(() => {setTimeout(fun, 0)
}, 30000
<script>
export default {data() {return {num: 0,timer: null,};},destroyed() {//离开页面是销毁clearInterval(this.timer);this.timer = null;},created() {// 实现轮询this.timer = window.setInterval(() => {setTimeout(this.getProjectList(), 0); // 发送请求}, 3000);},methods: {stop() {clearInterval(this.timer);this.timer = null;},// 请求是否有新消息getProjectList() {console.log("请求" + this.num++ + "次");if(this.num==8){this.stop() }}}
};
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/9473.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript字符串对象的常用方法

JavaScript字符串对象是指通过String构造函数创建的字符串实例。下面是一些常用的字符串方法的详细解析与案例说明&#xff1a; charAt(index)&#xff1a;返回指定索引位置的字符。 var str "Hello World"; console.log(str.charAt(0)); // "H"concat(…

传输层协议——UDP协议

目录 一、传输层 二、再谈端口号 端口号的划分 知名端口号 pidof netstat命令 三、UDP协议 1、UDP协议格式 2、UDP协议特点 3、UDP协议的缓冲区 四、基于UDP的应用层协议 一、传输层 上一篇文章我们所讲到的HTTP协议和HTTPS协议&#xff0c;是属于应用层协议。我们…

vue3.x + echarts 5.x + ant-design-vue 4.x + monaco-editor v3 新增版本切换功能

前言 1. 因为vue架构中&#xff0c;大多数包都是通过npm / yarn 等工具直接安转到node_modules 使用 2. 多个版本切换时&#xff0c;不可能全部安装echarts版本 3. 所以思路围绕如何通过cdn动态引入echarts一、添加工具代码 loadScript 路径 utils/loadScript.js export de…

PYTHON做题复盘

1、关于递归的代码 #会返回None的错误代码while len(string)<1:return Trueelse:if string[0]!string[-1]:return Falseelse:string string[1:-1]#正确while len(string) > 1:if string[0] ! string[-1]:return Falseelse:string string[1:-1]return True 错误原因&am…

【NodeMCU实时天气时钟温湿度项目 2】WIFI模式设置及连接

第一专题内容&#xff0c;请参考 【NodeMCU实时天气时钟温湿度项目 1】连接点亮SPI-TFT屏幕和UI布局设计-CSDN博客 第三专题内容&#xff0c;请参考 【NodeMCU实时天气时钟温湿度项目 3】连接SHT30传感器&#xff0c;获取并显示当前环境温湿度数据&#…

MySQL数据库变量使用

#MySQL变量的定义和使用 #一、标识符命名规范 #1.以字母或下划线开头&#xff0c;不能以数字开头 #2.不允许使用关键字和保留字 #3.只允许使用_和&#xffe5;作为标识符&#xff0c;不允许使用其他符号 #变量的定义方法 #set在update中使用过set&#xff0c;update声明修改表&…

致鸿物流器材有限公司揭示2024数字物流供应链与技术装备展新动态

参展企业介绍 广东致鸿物流器材有限公司&#xff0c;前身为广州致鸿物流器材有限公司&#xff0c;成立于2002年初&#xff0c;是一家在中国仓储笼行业成立多年的专业仓储笼制造公司&#xff0c;公司员工约400名&#xff0c;日产仓储笼制造规模近8000个&#xff0c;在全国范围内…

华为OD机试 - 手机App防沉迷系统(Java 2024 C卷 100分)

华为OD机试 2024C卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷C卷&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;每一题都有详细的答题思路、详细的代码注释、样例测试…

自动驾驶学习2-毫米波雷达

1、简介 1.1 频段 毫米波波长短、频段宽,比较容易实现窄波束,雷达分辨率高,不易受干扰。波长介于1~10mm的电磁波,频率大致范围是30GHz~300GHz 毫米波雷达是测量被测物体相对距离、相对速度、方位的高精度传感器。 车载毫米波雷达主要有24GHz、60GHz、77GHz、79GHz四个频段。 …

积鼎CFDPro颗粒流仿真 | 基于拉格朗日粒子追踪方法,模拟复杂颗粒的流动现象

颗粒流仿真是通过数值模拟手段模拟由大量固体颗粒构成的系统的动态行为&#xff0c;能够详尽刻画颗粒间的碰撞、扩散、堆积、破碎、混合等微观交互&#xff0c;以及与流体介质的相互作用&#xff0c;从而预测颗粒流在各种工况下的宏观表现。颗粒流仿真能够揭示隐藏的风险因素&a…

Java内存模型详解

一、JMM规范 可见性&#xff1a;volatile变量&#xff1b;锁原子性&#xff1a;synchronized和Lock等锁机制有序性&#xff1a;happens-before原则 Java内存模型&#xff08;Java Memory Model&#xff0c;JMM&#xff09;是Java虚拟机&#xff08;JVM&#xff09;的一个关键部…

前端开发如何切换node版本安装依赖

在前端开发当中经常遇到node版本不对应导致的安装依赖报错&#xff0c;可以通过切换node版本来实现 在macOS上切换Node.js版本&#xff0c;通常可以使用nvm&#xff08;Node Version Manager&#xff09;或n这样的包来管理。以下是使用nvm的步骤&#xff1a; 安装nvm&#xf…

4. SVG基本图形绘制教程

1. 矩形 <rect> 矩形是SVG中最基本的图形之一。通过<rect>元素可以绘制矩形和正方形。 参数: x 和 y&#xff1a;定义矩形左上角的坐标。width 和 height&#xff1a;定义矩形的宽度和高度。rx 和 ry&#xff1a;定义矩形边角的圆滑程度。 代码示例: <svg …

Java 变量类型

Java 变量类型 在 Java 语言中&#xff0c;所有的变量在使用前必须声明。 声明变量的基本格式如下&#xff1a; type identifier [ value][, identifier [ value] …] ; 格式说明&#xff1a; type – 数据类型。 identifier – 是变量名&#xff0c;可以使用逗号 , 隔开来…

C++ STL 概念1(未完成)

STL&#xff0c;全称Standard Template Library&#xff08;标准模板库&#xff09;&#xff0c;是C标准库的重要组成部分。 说到C的STL&#xff0c;让人就不免想到六大组件&#xff1a; 容器 迭代器 算法 仿函数 空间配置器 适配器 从容器开始逐个描述。 容器 容器分为关联…

Bert 在 OCNLI 训练微调

目录 0 资料1 预训练权重2 wandb3 Bert-OCNLI3.1 目录结构3.2 导入的库3.3 数据集自然语言推断数据集路径读取数据集数据集样例展示数据集类别统计数据集类加载数据 3.4 Bert3.4 训练 4 训练微调结果3k10k50k 0 资料 【数据集微调】 阿里天池比赛 微调BERT的数据集&#xff0…

想学PR的有福了,一小时学会PR剪视频

想学PR的有福了&#xff0c;一小时学会PR剪视频 Pr是什么软件&#xff1f;教程介绍及教程展示教程领取结语下期更新预报 Pr是什么软件&#xff1f; Pr是指Adobe Premiere Pro&#xff0c;它是由Adobe公司开发的一款专业级的视频编辑软件。这款软件广泛应用于电影、电视和网页视…

SQL统计语句记录

1.达梦数据库 统计指定单位的12个月份的业务数据 SELECT a.DEPT_ID, b.dept_name, a.USER_NAME, count(a.dept_id) as count, sum(case when to_char(a.CREATE_TIME,yyyy-mm) 2023-01 THEN 1 else 0 end) as one,sum(case when to_char(a.CREATE_TIME,yyyy-mm) 2023-02 T…

【JavaEE 初阶(四)】多线程进阶

❣博主主页: 33的博客❣ ▶️文章专栏分类:JavaEE◀️ &#x1f69a;我的代码仓库: 33的代码仓库&#x1f69a; &#x1faf5;&#x1faf5;&#x1faf5;关注我带你了解更多线程知识 目录 1.前言2.常见的锁策略2.1悲观锁vs乐观锁2.2轻量级锁vs重量级锁2.3自旋锁vs挂起锁2.4读写…

Linux——DNS域名解析服务的部署及优化方案

1. (问答题) 1.配置2台服务器要求如下&#xff1a; a&#xff09;服务器1&#xff1a; 主机名&#xff1a;dns-master.timinglee.org [rootserver100 ~]# hostnamectl hostname dns-master.timinglee.org [rootserver100 ~]# hostname dns-master.timinglee.org ip地址&#…