轮询定时器 清除 + vue2.0

需求? 

Gin + Vue + Element UI框架中,

我的大屏可视化项目, 大屏页面, 里边写了多个轮询定时器. 离开页面需要清理掉, 要不然切换路由还会在后台运行,

页面是自动缓存状态, 也不存在销毁一说了

所以通过路由router配置中, 页面路由监听中, 进行监听路由变化, 但是也没生效

普通定时器 清除
  data() {return {timer: null // 定时器状态}},mounted() {// 消息提醒this.startTimer()},destroyed(){// 离开当前路由后的操作clearInterval(this.timer)timer = null},methods: {/** 查询参数列表 */startTimer() {if (this.timer) clearInterval(this.timer) //清空上一个定时器this.timer = setInterval(() => {// 在定时器回调函数中发起请求this.getList()}, 30000) // 每30秒发送一次请求},}

不生效: 
beforeDestroy(){ // 离开当前路由前的操作clearInterval(timer)timer = null
}destroyed(){// 离开当前路由后的操作clearInterval(timer)timer = null
}this.$once('hook:beforeDestroy', () => {// $once一次性监听事件,触发后即关闭// hook 自定义钩子函数clearInterval(timer)timer = null
})建议大家常用this.$once('hook:钩子函数, ()=> {})
其本质上是执行this.$emit()并返回一个callBack()
直接用在创建实例处,也可以用于自定义组件上
如:<Test @hook:mounted="loading = false" @hook:beforeUpdated="loading = true" @hook:updated="loading = false" :data="data" />或:mounted() { const timer = setInterval(() => { ... }, 1000);this.$once('hook:beforeDestroy', () => clearInterval(timer);) }
 监听路由变化 清除定时器, 依旧不生效
watch: {//监听路由$route:{handler(oldVal,newVal){// 判断当前页面是要清楚的路由不,单页面应用中使用if (oldVal.path != '/xx/xx/xx') {clearInterval(this.timer)this.timer = null} else {this.Init();this.timer = setInterval(() => {this.Init();}, 1000 * 30)}},deep:true, // 深度监听immediate: true // 使监听在页面加载完成后执行,避免数据无变化或初进页面时监听不执行}
},

解决: 

vue项目中,正常情况下,我们在生命周期 destroyed 中关闭即可
一旦页面中使用了keep-alive 进行缓存,此时 destroyed 会失效
需要在 deactivated 钩子函数去关闭,他是 keep-alive 特有的钩子函数
// 开启定时器
activated(){this.start()
},
// 关闭定时器
deactivated(){clearInterval(this.timer)
}

eg: 

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

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

相关文章

MySQL中datetime和timestamp的区别

datetime和timestamp的区别 相同点: 存储格式相同 datetime和timestamp两者的时间格式都是YYYY-MM-DD HH:MM:SS 不同点: 存储范围不同. datetime的范围是1000-01-01到9999-12-31. 而timestamp是从1970-01-01到2038-01-19, 即后者的时间范围很小. 与时区关系. datetime是存储…

计算机视觉(手势识别)

import cv2 import time import math import numpy as np import mediapipe as mp# mediapipe配置 mp_drawing mp.solutions.drawing_utils mp_drawing_styles mp.solutions.drawing_styles mp_hands mp.solutions.hands hands mp_hands.Hands(static_image_modeTrue,max_n…

Vue2 实现带输入的动态表格,限制el-input输入位数以及输入规则(负数、小数、整数)

Vue2 实现el-input带输入限制的动态表格&#xff0c;限制输入位数以及输入规则&#xff08;负数、小数、整数&#xff09; 在这个 Vue2 项目中&#xff0c;我们实现一个限制输入位数&#xff08;整数16位&#xff0c;小数10位&#xff09;以及输入规则&#xff08;负数、小数、…

Android 11.0 mtp模式下连接PC后只显示指定文件夹功能实现

1. 前言 在android11.0的系统rom定制化开发中,对于usb作为otg连接电脑时,在mtp模式下会作为一个存储器在电脑端显示,作为电脑的 一个盘符,来显示设备的内部存储的文件,所以说如果要对设备内部的资料做保密处理的时候,需要在mtp模式下不显示某些 文件夹,接下来就分析下相…

Fluids —— Narrow band and variable density

目录 Narrow Band Variable Density Narrow Band Narrow band是一种有效的加速模拟、节省资源、及优化整体性能的方法&#xff1b;其想法是&#xff0c;只在表面上带有一定厚度的粒子&#xff0c;表面下的一切都不是通过粒子表示的&#xff1b; 具有大量粒子的模拟&#xff0…

Leetcode2981. 找出出现至少三次的最长特殊子字符串 I

Every day a Leetcode 题目来源&#xff1a;2981. 找出出现至少三次的最长特殊子字符串 I 解法1&#xff1a;滑动窗口 暴力枚举 滑动窗口枚举窗口内字符相同的字符串&#xff0c;再暴力枚举长度相等的字符串。 代码&#xff1a; /** lc appleetcode.cn id2981 langcpp**…

DHCP,怎么在Linux和Windows中获得ip

一、DHCP 1.1 什么是dhcp DHCP动态主机配置协议&#xff0c;通常被应用在大型的局域网络环境中&#xff0c;主要作用是集中地管理、分配IP地址&#xff0c;使网络环境中的主机动态的获得IP地址、DNS服务器地址等信息&#xff0c;并能够提升地址的使用率。 DHCP作为用应用层协…

DRAM、SRAM、PSRAM和Flash

DRAM、SRAM和Flash都属于存储器&#xff0c;DRAM通常被称为内存&#xff0c;也有些朋友会把手机中的Flash闪存误会成内存。SRAM的存在感相对较弱&#xff0c;但他却是CPU性能发挥的关键。DRAM、SRAM和Flash有何区别&#xff0c;它们是怎样工作的&#xff1f; DRAM&#xff1a;…

Multimodal Knowledge Expansion复现

表2 复现结果 multimodal student (ours)&#xff1a; v 0 2 v 1 10 r 0 0.8 82.1 78.6 77.5 \begin{array}{} v02 & v1 10 & r0 0.8 \\\\ 82.1 & 78.6 & 77.5 \end{array} v0282.1​v11078.6​r00.877.5​ 感想 第二篇完全复现的论文

创建型模式 | 建造者模式

一、建造者模式 1、原理 建造者模式又叫生成器模式&#xff0c;是一种对象的构建模式。它可以将复杂对象的建造过程抽象出来&#xff0c;使这个抽象过程的不同实现方法可以构造出不同表现&#xff08;属性&#xff09;的对象。创建者模式是一步一步创建一个复杂的对象&#xf…

5个Linux性能监控命令

这些命令提供了宝贵的系统性能统计数据&#xff0c;有助于分析资源利用率、识别瓶颈和优化效率。 1. vmstat – 报告虚拟内存统计数据 vmstat 命令可打印有关内存、交换、I/O 和 CPU 活动的详细报告。其中包括已用/可用内存、交换入/出、磁盘块读/写和 CPU 进程/闲置时间等指…

zookeeper下载安装部署

zookeeper是一个为分布式应用提供一致性服务的软件&#xff0c;它是开源的Hadoop项目的一个子项目&#xff0c;并根据google发表的一篇论文来实现的。zookeeper为分布式系统提供了高效且易于使用的协同服务&#xff0c;它可以为分布式应用提供相当多的服务&#xff0c;诸如统一…

P1328 [NOIP2014 提高组] 生活大爆炸版石头剪刀布————C++

目录 [NOIP2014 提高组] 生活大爆炸版石头剪刀布题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示 解题思路Code调用函数的Code&#xff08;看起来简洁一点&#xff09;运行结果 [NOIP2014 提高组] 生活大爆炸版石头剪刀布 …

软件测评中心▏性能测试之压力测试、负载测试的区别和联系简析

在如今的信息时代&#xff0c;软件已经成为人们日常工作和生活不可或缺的一部分。然而&#xff0c;随着软件的发展和应用范围的不断扩大&#xff0c;软件性能的优劣也成为了影响用户使用体验的重要因素。 软件性能测试即对软件在不同条件下的性能进行评估和验证的过程。通过模…

C#多窗口那些事儿

目录 1、调用窗体与被调用窗体 2、窗体的本质 3、调用窗体访问被调用窗体内部对象 4、被调用窗体访问调用窗体 (1)被动方式,也就是调用窗体主动给被调用窗体一个“接口” i.调用窗体定义“静态”变量,并将开放的变量复制 ii.在被调用窗体中,使用:调用窗体名.静态变…

华为OD机试 - 特殊的加密算法(Java JS Python C)

题目描述 有一种特殊的加密算法,明文为一段数字串,经过密码本查找转换,生成另一段密文数字串。 规则如下: 明文为一段数字串由 0~9 组成密码本为数字 0~9 组成的二维数组需要按明文串的数字顺序在密码本里找到同样的数字串,密码本里的数字串是由相邻的单元格数字组成,上…

php多小区智慧物业管理系统源码带文字安装教程

多小区智慧物业管理系统源码带文字安装教程 运行环境 服务器宝塔面板 PHP 7.0 Mysql 5.5及以上版本 Linux Centos7以上 统计分析以小区为单位&#xff0c;统计如下数据&#xff1a;小区总栋数、小区总户数、小区总人数、 小区租户数量、小区每月收费金额统计、小区车位统计、小…

原理图PCB设计文件笔记等分享出来:国产MCU AT32F403+DRV8313+磁编码器的直流无刷电机BLDC的FOC控制

原理图PCB分享出来啦&#xff1a;机器人关节国产MCU AT32F403DRV8313磁编码器的直流无刷电机BLDC的FOC控制 引子包含文件 引子 经过45集的【三哥说技术】视频课程&#xff0c;机器人关节国产MCU AT32F403DRV8313磁编码器的直流无刷电机BLDC的FOC控制板的原理图和PCB都画完了&a…

word2vec中的CBOW和Skip-gram

word2cev简单介绍 Word2Vec是一种用于学习词嵌入&#xff08;word embeddings&#xff09;的技术&#xff0c;旨在将单词映射到具有语义关联的连续向量空间。Word2Vec由Google的研究员Tomas Mikolov等人于2013年提出&#xff0c;它通过无监督学习从大规模文本语料库中学习词汇…

2023年全国职业院校技能大赛软件测试赛题—单元测试卷⑦

单元测试 一、任务要求 题目1&#xff1a;任意输入2个正整数值分别存入x、y中&#xff0c;据此完成下述分析&#xff1a;若x≤0或y≤0&#xff0c;则提示&#xff1a;“输入不符合要求。”&#xff1b;若2值相同&#xff0c;则提示“可以构建圆形或正方形”&#xff1b;若2<…