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

定时器-前端使用定时器3s轮询状态接口,2min为接口超时

背景

众所周知,后端是处理不了复杂的任务的,所以经过人家的技术讨论之后,把业务放在前端来实现。记录一下这次的离大谱需求吧。

如图所示,这个页面有5个列表,默认加载计划列表。但是由于后端的种种原因,这个列表接口不能直接调取。

要先调一个查询状态的接口,每 3s 轮询一次,如果返回的计划状态字段campaign为 true,才可以调列表page接口。

如果 30s 的时候还没为 true,表格的加载文案变成“数据量较大,拼命加载中,请耐心等待”。

如果2min的时候还没为 true,停止轮询,表格显示为“数据量较大,加载超时,请稍后”,提供一个重试按钮。

实现思路

首先定义一个全局变量-定时器。

在页面初始化的时候,加载loadData方法,如果定时器存在,清除定时器,防止污染。

定义一个方法lockData,在loadData函数中调用,这个方法的参数为一个异步函数的处理结果,这个异步函数就是查询状态,如果返回的计划状态为真,则调取列表接口,return false,否则return 接口的响应结果(一个对象)

在lockData方法中,定义一个秒数参数curTime,再定义清除定时器的方法。如果定时器不存在,先接收参数,看看查询结果是什么。如果这个参数为 false ,说明之前查询状态的结果是真已经直接调page接口了,此时直接return,结束方法。否则,开启定时器,秒数自增,如果秒数能整除3,且参数存在,调取参数,拿到返回结果,如果结果为 false,则清除定时器。如果curTime 大于200,清除定时器,让表格显示超时样式。

代码如下:

async lockData(func) {let curTime = 0const clearI = () => {clearInterval(Interval)Interval = nullcurTime = 0this.loadingText = ''this.loading = false}if (!Interval) {this.loading = truelet isClear = await func()if (!isClear) returnInterval = setInterval(async () => {curTime++if (curTime >= 30) {this.loadingText = '数据量较大,拼命加载中,请耐心等待'}if (curTime % 3 === 0) {if (func) {let isClear = await func()console.log('lockData', { curTime, isClear })if (!isClear) clearI()}}if (curTime >= 120) {clearI()this.tableData = []this.timeOutEmpty = true}}, 1000)this.$once('hook:beforeDestroy', () => {clearInterval(Interval)})}
},
async loadData() {if(Interval) {clearInterval(Interval)Interval = null}this.timeOutEmpty = falsethis.lockData(async () => {let response = await this.dataSync()return response})
},
async dataSync() {this.loading = truelet response = await this.$axios.post('/xxxxx/baseToday', {xxxx})if (response.data.status === 0 && response.data.data['campaign']) {await this.getData()return false}return response
},
async getData() {this.loading = truelet response = await this.$axios.post('/xxxx/page', {xxxx})if (response.data.status === 0) {this.tableData = response.data.listthis.total = response.data.totalCountthis.$emit('changeTotal', {key: 'campaignNum',value: this.total})}this.loading = false
}
<div slot="empty"><div v-if="timeOutEmpty"><span>数据量较大,加载超时,请稍后<el-button @click="loadData" type="text">重试</el-button></span></div><span v-else>暂无数据</span>
</div>

相关文章:

定时器-前端使用定时器3s轮询状态接口,2min为接口超时

背景 众所周知&#xff0c;后端是处理不了复杂的任务的&#xff0c;所以经过人家的技术讨论之后&#xff0c;把业务放在前端来实现。记录一下这次的离大谱需求吧。 如图所示&#xff0c;这个页面有5个列表&#xff0c;默认加载计划列表。但是由于后端的种种原因&#xff0c;这…...

python实践笔记(二): 类和对象

1. 写在前面 最近在重构之前的后端代码&#xff0c;借着这个机会又重新补充了关于python的一些知识&#xff0c; 学习到了一些高效编写代码的方法和心得&#xff0c;比如构建大项目来讲&#xff0c;要明确捕捉异常机制的重要性&#xff0c; 学会使用try...except..finally&…...

指定GPU跑模型

加上一个CUDA_VISIBLE_DEVICES0,2就行了&#xff0c;使用0卡和2卡跑模型&#xff0c;注意多卡有时候比单卡慢&#xff0c;4090无NVlink&#xff0c;数据似乎是通过串行的方式传输到多个gpu的&#xff0c;只不过单个gpu是并行计算&#xff0c;数据在gpu与gpu之间似乎是串行传输的…...

Windows桌面运维----第五天

1、华为路由怎们配置IP、划分vlan、互通&#xff1a; 1、用户模式→系统模式&#xff1b; 2、进入相关端口&#xff0c;配置IP地址&#xff1b; 3、开通相应vlan,设置vlanX、IP地址&#xff1b; 4、绑定相关端口&#xff0c;设置端口类型&#xff1b; 5、电脑设置IP&#…...

bash和dash的区别(及示例)

什么是bash、dash Bash(GNU Bourne-Again Shell)是许多Linux平台的内定Shell&#xff0c;事实上&#xff0c;还有许多传统UNIX上用的Shell&#xff0c;像tcsh、csh、ash、bsh、ksh等等。 GNU/Linux 操作系统中的 /bin/sh 本是 bash (Bourne-Again Shell) 的符号链接&#xff0…...

Java基础入门day65

day65 web项目 页面设计 仿照小米官网&#xff0c;将首页保存到本地为一个html页面&#xff0c;再将html页面保存为jsp页面&#xff0c;在项目中的web.xml文件中配置了欢迎页 <welcome-file-list><welcome-file>TypesServlet</welcome-file> </welcome-…...

解密制度的规定和解密工作的具体流程

解密制度是指对于某些敏感的文件或资料,经过一定的时间后,根据相关规定和程序,可以进行解密,解除文件的保密状态,使其可以被公众查阅或利用。解密制度的目的在于确保涉密信息的保密等级与其重要程度相适应,防止涉密信息的泄露和使用不当,同时促进信息公开、传播历史知识…...

实际中常用的网络相关命令

一、ping命令 ping是个使用频率极高的实用程序&#xff0c;主要用于确定网络的连通性。这对确定网络是否正确连接&#xff0c;以及网络连接的状况十分有用。 简单的说&#xff0c;ping就是一个测试程序&#xff0c;如果ping运行正确&#xff0c;大体上就可以排除网络访问层、网…...

机器学习补充

一、数据抽样 数据预处理阶段&#xff1a;对数据集进行抽样可以帮助减少数据量&#xff0c;加快模型训练的速度/减少计算资源的消耗&#xff0c;特别是当数据集非常庞大时&#xff0c;比如设置sample_rate0.8.平衡数据集&#xff1a;通过抽样平衡正负样本&#xff0c;提升模型…...

机器学习——RNN、LSTM

RNN 特点&#xff1a;输入层是层层相关联的&#xff0c;输入包括上一个隐藏层的输出h1和外界输入x2&#xff0c;然后融合一个张量&#xff0c;通过全连接得到h2&#xff0c;重复 优点&#xff1a;结构简单&#xff0c;参数总量少&#xff0c;在短序列任务上性能好 缺点&#x…...

Java项目学习(员工管理)

新增、员工列表、编辑员工整体代码流程与登录基本一致。 1、新增员工 RestController RequestMapping("/admin/employee")EmployeeController 类中使用了注解 RestController 用于构建 RESTful 风格的 API&#xff0c;其中每个方法的返回值会直接序列化为 JSON 或…...

视觉SLAM14精讲——相机与图像3.3

视觉SLAM14精讲 三维空间刚体运动1.0三维空间刚体运动1.1三维空间刚体运动1.2李群与李代数2.1相机与图像3.1相机与图像3.2 视觉SLAM14精讲——相机与图像3.3 视觉SLAM14精讲相机投影流程双目相机模型 相机投影流程 至此&#xff0c;有关相机三维刚体变换的所有因素已经汇集。…...

【路径规划】基于粒子群结合遗传算法实现机器人栅格地图路径规划

研究方法: 基于粒子群优化算法结合遗传算法的机器人栅格地图路径规划是一种智能算法的应用。它将粒子群优化算法和遗传算法相结合,以寻找最优路径规划解决方案。 研究路线: 理论研究:了解粒子群优化算法和遗传算法的基本原理,并掌握相关的路径规划理论知识。 算法设计:…...

内容安全复习 9 - 身份认证系统攻击与防御

文章目录 基于生物特征的身份认证系统概述基于生物特征的身份认证 人脸活体检测检测方法未解决问题 基于生物特征的身份认证系统概述 作用&#xff1a;判别用户的身份、保障信息系统安全。 是识别操作者身份的过程&#xff0c;要保证其**物理身份&#xff08;现实&#xff0…...

Python-gui开发之Pycharm+pyside6/Pyqt6环境搭建

Python-gui开发之Pycharm+pyside6/Pyqt6环境搭建 软件版本一、软件安装1、Python安装2、Pycharm安装3、pyside6或pyqt6安装①安装pyside6②安装PyQt6和pyqt6-tools二、Pycharm项目配置1、插件安装2、新建项目以及环境配置3、包管理安装三、在Pycharm中配置PySide61、pyside6 Qt…...

大数据开发语言Scala入门 ,如何入门?

Ai文章推荐 1 作为程序员&#xff0c;开发用过最好用的AI工具有哪些&#xff1f; 2 Github Copilot正版的激活成功&#xff0c;终于可以chat了 3 idea,pycharm等的ai assistant已成功激活 4 新手如何拿捏 Github Copilot AI助手&#xff0c;帮助你提高写代码效率 5 Jetbrains的…...

【人机交互 复习】第1章 人机交互概述

人机交互的知识点碎&#xff0c;而且都是文字&#xff0c;过一遍脑子里什么都留不下&#xff0c;但是背时间已经来不及了&#xff0c;最好还是找题要题感吧&#xff0c;加深印象才是做对文科的关键 一、概念 1.人机交互&#xff08;Human-Computer Interaction,HCI)&#xff1…...

HCIP-HarmonyOS Device Developer 课程大纲

一&#xff1a;系统及应用场景介绍 1 -&#xff08;3 课时&#xff09; - HarmonyOS 系统介绍&#xff1b;HarmonyOs 定义&#xff1b;HarmonyOS 特征&#xff1b; - 统一 OS&#xff0c;弹性部署&#xff1b;硬件互助&#xff0c;资源共享&#xff1b;一次开发&#xff0c;多…...

蓝桥杯 经典算法题 查找两个总和为特定值的索引

题目&#xff1a; 给定一个数组&#xff0c;找到两个总和为特定值的索引。 例如给定数组 [1, 2, 3, -2, 5, 7]&#xff0c;给定总和 7&#xff0c;则返回索引 [1, 4]。 若有多组符合情况则输出索引对中小索引最小的一组。 题解: 本题可以通过暴力枚举&#xff0c;枚举每两…...

Java | Leetcode Java题解之第169题多数元素

题目&#xff1a; 题解&#xff1a; class Solution {public int majorityElement(int[] nums) {int count 0;Integer candidate null;for (int num : nums) {if (count 0) {candidate num;}count (num candidate) ? 1 : -1;}return candidate;} }...

十大机器学习算法深入浅出

本栏目涉及对于回归算法、聚类算法、决策树、随机森林、神经网络、贝叶斯算法、支持向量机等十大机器学习算法的笔记 下面是笔记大纲&#xff0c;具体内容可查看**“十大机器学习算法深入浅出”**专栏&#xff0c;内容持续更新&#xff0c;欢迎订阅专栏和专注我&#xff01; 1…...

【论文笔记】Parameter-Effificient Transfer Learning for NLP

题目:Parameter-Effificient Transfer Learning for NLP 阅读 文章目录 0.摘要1.引言2 Adapter tuning for NLP3 实验3.1 参数/性能平衡3.2 讨论 4.相关工作 0.摘要 克服微调训练不高效的问题&#xff0c;增加一些adapter模块&#xff0c;思想就是固定原始的网络中的参数&…...

Qt异常处理

初步警告:异常安全功能不完整!一般情况下应该可以工作&#xff0c;但类仍然可能泄漏甚至崩溃。 Qt本身不会抛出异常。而是使用错误码, 但是C可能会抛出异常。此外&#xff0c;有些类有用户可见的错误消息&#xff0c;例如QIODevice::errorString()或QSqlQuery::lastError()。这…...

【ElasticSearch】ElasticSearch实战

初步检索 检索 ES 信息 1&#xff09;、GET /_cat/nodes&#xff1a;查看所有节点 127.0.0.1 44 83 1 0.01 0.01 0.00 dilm * 1b06a843b8e3 *代表主节点 2&#xff09;、GET /_cat/health&#xff1a;查看健康状况 1718265331 07:55:31 elasticsearch yellow 1 1 4 4 0 0…...

48-3 内网渗透 - 令牌操纵

访问令牌操纵 Windows 操作系统的访问控制模型是其安全性的重要组成部分,主要由访问令牌(Access Token)和安全描述符(Security Descriptor)构成。访问令牌是访问者持有的,而安全描述符则由被访问对象持有。通过对比访问令牌和安全描述符的内容,Windows 可以判断访问者是…...

架构师之 Kafka 核心概念入门

Kafka 核心概念 作为架构师,理解 Kafka 的核心概念至关重要。这些概念是构建高效、可靠的 Kafka 系统的基础。 以下是需要掌握的 Kafka 核心概念及其详细说明: 1. Topic 定义:Topic 是 Kafka 中用于存储和分类消息的逻辑命名空间。每个 Topic 代表一类数据流, 例如日志、…...

Redis通用命令详解

文章目录 一、Redis概述1.1 KEYS&#xff1a;查看符合模板的所有 key1.2 DEL&#xff1a;删除一个指定的 key1.3 EXISTS&#xff1a;判断 key 是否存在1.4 EXPIRE&#xff1a;给一个 key 设置有效期&#xff0c;有效期到期时该 key 会被自动删除1.5 TTL&#xff1a;查看一个 ke…...

物联网设备安装相关知识整理

拓扑图 对于ADAM-4150先接设备的整体的供电。 ADAM-4150就涉及到几个电子元器件的连接&#xff0c;一个是485-232的转换器&#xff0c;一个是将RS-232转换为USB的转接口&#xff0c;因为现在的计算机很多都去掉了RS-232接口而使用USB接口。 4150右侧有个拨码&#xff0c;分别两…...

React实现H5手势密码

监测应用进入前后台 在JavaScript中&#xff0c;监听H5页面是否在前台或后台运行&#xff0c;主要依赖于Page Visibility API。这个API在大多数现代浏览器中都是支持的&#xff0c;包括苹果的Safari和谷歌的Chrome&#xff08;也就基本覆盖了Android和iOS平台&#xff09;。下…...

[leetcode hot 150]第十五题,三数之和

题目&#xff1a; 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以包含重复…...

武汉做网站公司哪家好/百度招聘2022年最新招聘

今天小编来给大家针对这个教大家Mac磁盘里的其他怎么删除的方法的问题来进行一个介绍&#xff0c;毕竟当下也是有诸多的小伙伴对于教大家Mac磁盘里的其他怎么删除的方法这个问题非常的重视的&#xff0c;下面大家可以看下具体的详情1. 查看 OS X 中“其他”部分大小点击顶部苹果…...

做网站找哪家好熊掌号/2022最火营销方案

DSpace 1.5版本对统计功能做了比较多的更新。 配置好config目录下的dstat.dat文件 # the year and month to start creating reports from # - year as four digits (e.g. 2005) 开始统计的年份 # - month as a number (e.g. January is 1, December is 12)开始统计的月份 st…...

做beautyleg网站违法吗/关键词歌曲

说明&#xff1a;所谓增量备份&#xff0c;就是备份自上一次备份之后增加或改变的文件或内容。然而MySQL没有提供直接的增量备份方法&#xff0c;但是却可以通过MySQL的二进制日志间接实现增量备份。下面有关操作方法进行测试。..实验环境&#xff1a;装有MySQL 5.7 数据库的Ce…...

青岛建设银行股份有限公司网站/百度一下首页官网

2019独角兽企业重金招聘Python工程师标准>>> 原文&#xff1a;https://my.oschina.net/u/660253/blog/735184 官网&#xff1a;http://apidocjs.com 转载于:https://my.oschina.net/u/164010/blog/848729...

山东济南网站建设公司/安徽网络建站

插入排序冒泡排序归并排序快速排序堆排序桶排序和基数排序外部排序一&#xff0e; 插入排序插入排序的时间复杂度是O(n^2)。插入排序重复地将新元素插入到一个排好序的子线性表中&#xff0c;直到整个线性表排好序。算法描述如下&#xff1a;for(int i0;i将list[i]插入&#xf…...

网站标题具体怎样优化/b2b网站推广排名

本文是学习罗升阳大佬的《安卓系统源码与情景分析》的笔记和内容 一、为什么要用智能指针&#xff1f; 二、什么是智能指针&#xff1f;怎么用&#xff1f; 三、安卓系统三种智能指针的原理和关系 四、强弱指针的易混淆问题 一、为什么要用智能指针&#xff1f; 首先framewor…...