VUE3跳转页面时 定时器未清除解决

一,问题

1、在vue中使用setTimeout定时器的时候,可能会遇到关不掉的情况,会存在明明已经在beforeDestroy和destroyed中设置了定时器清除了,但是有时候没生效,定时器还会继续执行。
2、在这里需要说一下setTimeout的使用场景:
(1)需要执行一次定时的时候用得到,比如需要在多久之后执行的一次操作
(2)接口需要定时查询,并且需要在接口返回数据后再查询的情况下(接口定时查询的时候,该方式会经常用得到)
二、问题出现的原因
场景:目前有个接口方法,执行该方法需要5s执行完成,并且还需要在执行完后定时查询数据
问题原因分析:
(1)问题发生的场景

a. 该方法需要5s执行完,但是当执行到该方法中第2s的时候,切换页面的时候将该组件销毁了


b. 销毁了该组件,但是该方法还是会在缓存中执行往下执行,并不会因为组件销毁而停止执行后面的代码,所以后面的定时器还是会执行到,并且后续的定时器也会一直执行


c. 因为一直在缓存中执行,并且组件已经销毁了,所以定时器就会存在清不掉的情况
(2)这种情况是偶发性的,很少有需要执行5s的方法,为了将该问题复现测试,我测试的时候是自己模拟了一下这个场景,所以使用的是5s;大部分的情况可能是几十毫秒或者几百毫秒就可以执行完成了,但是在销毁的时候,恰好处于方法执行的过程中,就会导致定时器清不掉的情况

重要就是在切换页面时 定时器并未清除掉(已经在VUE2,beforeDestroy,destroyed  , VUE3 onBeforeUnmount,onUnmounted  中设置清除定时器方法但未生效)

解决方法 

使用 路由 导航守卫 监听页面跳转时清除

VUE2  (无需引入 直接书写)

  // destroyed() {
  //   clearInterval(this.timer);  // 清除定时器
  // },  之前是这么写的

  // 将 destroyed() 改为 beforeRouteLeave()
  beforeRouteLeave(to, from, next) {
    if (this.timer) {
      clearInterval(this.timer);
      this.timer = null;
      this.$refs.mychild.headerClearTimeFn();
    }
     //注意一定要next()让其跳转!!!
    next()
  }

VUE3  需要引入

import { onBeforeRouteLeave } from 'vue-router'



onBeforeRouteLeave((to, from, next) => {
    //清除定时器
       // ......
    next()
})

 

onBeforeRouteLeave(离开当前页面路由时触,return false则阻止跳转)onBeforeRouteUpdate(路由更新时触发)

vue-router提供的两个composition api,它们只能被用于setup中。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Kubernetes 配置Pod使用代理上网

配置Kubernetes Pod使用代理上网 在企业网络环境中进行Kubernetes集群的管理时,经常会遇到需要配置Pods通过HTTP代理服务器访问Internet的情况。这可能是由于各种原因,如安全策略限制、网络架构要求或者访问特定资源的需要。本文将介绍配置Kubernetes中…

天融信TOPSEC Cookie 远程命令执行漏洞复现

声明 本文仅用于技术交流,请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。 一、漏洞概述 天融信TOPSEC解决方案包括综合管理系统,各类安…

科研上新 | 第4期:语言-音乐对比预训练;查找表实现的神经网络推理;大模型时代重新定义搜索框架

编者按:欢迎阅读“科研上新”栏目!“科研上新”汇聚了微软亚洲研究院最新的创新成果与科研动态。在这里,你可以快速浏览研究院的亮点资讯,保持对前沿领域的敏锐嗅觉,同时也能找到先进实用的开源工具。 本期内容速览 …

草图大师 sketchup pro2023

SketchUp Pro是一款功能强大的三维建模软件,适用于建筑、机械、室内设计等领域。它提供了丰富的绘图工具和灵活的建模选项,支持实时预览和多种设备适配,让用户能够快速高效地创建出逼真的三维模型。SketchUp Pro还具备强大的插件生态和团队协…

【mars3d】FixedRoute的circle没有跟polyline贴着模型的解决方案

问题:【mars3d】官网的贴模型示例中,参考api文档增加了circle的配置,但是FixedRoute的circle没有跟polyline贴着模型 circle: { radius: 10, materialType: mars3d.MaterialType.CircleWave, materialOptions: { color: "#ffff00"…

数仓分层结构

--图片来源尚硅谷 ODS层: 数据存储格式:JSON/TSV gzip压缩(默认) Operate Data Store -- 存储从mysql业务数据库和日志服务器的日志文件中采集到的数据 -- 日志数据 -- 格式:JSON --业务数据 --历史数据 …

借还款记账表,借款还款记账软件

我们每个人都在为生活奔波,为事业打拼。但有时候,生活中的一些小事情,比如朋友间的借贷、还款,就可能让我们的生活变得有些混乱。为了解决这个问题,一个全新的借还款记账软件【晨曦记账本】横空出世,它不仅…

STM32真的是很落后吗?

今日话题,STM32真的是很落后吗?STM32是否落后于其他技术在很大程度上依赖于具体的应用和需求。虽然我对Python的了解有限,但我认识到STM32在嵌入式领域具有广泛的应用和卓越的性能。值得注意的是,STM32不仅性能卓越,而…

公众号文章如何提高阅读量?媒介盒子教你几招

公众号作为微信运营的主要载体,做得好就能让品牌得到大量曝光,公众号文章作为长文案想要写好还需要一定的技术,今天媒介盒子就来和大家聊聊公众号文章怎么写才能提高阅读量: 一、 内容干货满足读者求知欲 只要你的文章实用性强&…

CFOxCIO共议:CRM如何帮上市公司更长久赚钱?

2024年的增长机会,在于新旧动能转化,在于高质量发展,也在于组织的应变力。包括CRM系统在内的数字化平台对于上市公司的价值,正从单纯的降本增效工具,走向与合规及利润提升相结合,支撑企业战略落地&#xff…

Linux操作系统基础(02):Linux系统的安装

1. 准备工作 VMware Workstation 是一款由 VMware 公司开发的虚拟机软件,它可以在一台物理计算机上创建多个虚拟计算机环境,每个虚拟计算机都可以运行不同的操作系统,网络上的资源很多。 Windwos系统下载并安装 VMware Workstation17。在VM…

前端技术-调试工具(上)

页面制作之调试工具 常用的调试工具有Chrome浏览器的调试工具,火狐浏览器的Firebug插件调试工具,IE的开发人员工具等。它们的功能与使用方法大致相似。Chrome浏览器简洁快速,功能强大这里主要介绍Chrome浏览器的调试工具。 打开 Google Chrom…

搜维尔科技:【简报】第九届元宇宙数字人设计大赛,报名已经进入白热化阶段!

随着元宇宙时代的来临,数字人设计成为了创新前沿领域之一。为了提高大学生元宇宙虚拟人角色策划与美术设计的专业核心能力,我们特别举办了这场元宇宙数字人设计赛道,赛道主题为「AI人工智能科技」 ,只要与「AI人工智能科技」相关的…

mysql的读写分离

MySQL 读写分离原理 读写分离就是只在主服务器上写,只在从服务器上读。 主数据库处理事务性操作,而从数据库处理 select 查询。 数据库复制被用来把主数据库上事务性操作导致的变更同步到集群中的从数据库。 常见的mysql读写分离分为以下两种 1&…

论文润色让审稿人更青睐

大家好,今天来聊聊论文润色让审稿人更青睐,希望能给大家提供一点参考。 以下是针对论文重复率高的情况,提供一些修改建议和技巧,可以借助此类工具: 标题:论文润色让审稿人更青睐――提升论文通过率的秘诀 …

LDD学习笔记 -- Linux内核模块

LDD学习笔记 -- 内核模块 简介LKM类型Static Linux Kernel ModuleDynamic Linux Kernel ModuleLKM编写语法 syntax详细描述内核头文件用户空间头文件Module Initialization FunctionModule Cleanup FunctionKeyword & Tag宏 __init __exitLKM入口注册Module Metadate&#…

AE (4)_ 直方图调整的理论

#灵感# 在短暂的高通平台调试中,很看重直方图调整的理解。后来其它平台,不怎么调整这个了。但还是记录一下。 我个人还是倾向 招式简单,但应用到极致。 绝大部分内容来自:刘斯宁,Image Enhancement - CLAHE - 知乎 (z…

redis 面试问题 (更新中 ing)

目录 reids 是做什么的为什么那么快有哪些使用场景redis有哪些 数据结构redis 有哪些底层数据结构为什么设计 sds一个 字符串 存储多大容量 stream为什么设计 streamstream 消费者消息丢失stream 消息私信问题 持久化机制redis 持久化机制,优缺点,怎么用…

全解析阿里云Alibaba Cloud Linux镜像操作系统

Alibaba Cloud Linux是基于龙蜥社区OpenAnolis龙蜥操作系统Anolis OS的阿里云发行版,针对阿里云服务器ECS做了大量深度优化,Alibaba Cloud Linux由阿里云官方免费提供长期支持和维护LTS,Alibaba Cloud Linux完全兼容CentOS/RHEL生态和操作方式…

【python入门】day12:bug及其处理思路

bug的常见类型 粗心 / 没有好习惯 思路不清 lst[{rating:[9.7,2062397],id:1292052,type:[犯罪,剧情],title:肖申克的救赎,actors:[蒂姆罗宾斯,摩根弗里曼]},{rating:[9.6,1528760],id:1291546,type:[剧情,爱情,同性],title:霸王别姬,actors:[张国荣 ,张丰毅 , 巩俐 ,葛优]},{r…