首页 > 其他分享 >解决Vue3中定时器自动销毁问题

解决Vue3中定时器自动销毁问题

时间:2023-01-08 20:11:40浏览次数:45  
标签:定时器 console 请求 null timer 销毁 Vue3 getData

解决Vue3中定时器自动销毁问题

1.前言

在近期的一个Vue项目中使用到了定时器,由于本人没有系统学习过前端,对前端项目的水平仅限于能够使用,一些细节上可能存在问题,比如定时器这个问题。在项目中,页面自动刷新、切换后还在重复不停的发送请求的问题。

2.问题

在setTimeout中用来调用请求数据的方法,我遇到的问题是,刚开始只想到怎么实现定时请求的问题,没有用合适的方法去关闭setTimeout,在离开当前页面后,请求还在不断的发送问题,这样给服务器带来了不必要的压力。

3.解决实例

export default {
    data() {
        return {
            timer: null,
            gps: null
        }
    },
    mounted() {
        this.$nextTick(() => {
            this.getData()
        })
        // 使用定时器
        this.timer = setInterval(() => {
            setTimeout(this.getData(), 0)) // 如果有多个请求,指定执行顺序
        }, 1000) // 1000ms 
    },
    // vue3中使用beforeUnmount
    beforeUnmount() {
        console.log("定时器清除")
        clearInerval(this.timer) // 清除定时器
        this.timer = null
    },
    methods: {
        // 用于请求数据的方法
        getData() {
            getGPSDataApi().then(res => {
                console.log("GPS", res.data)
            })
        }
    }
}

4.完整代码

<template>
    <div>
		<span>GPS: {{ gps }}</span>
    </div>
</template>
<script>
export default {
    data() {
        return {
            timer: null,
            gps: null
        }
    },
    mounted() {
        this.$nextTick(() => {
            this.getData()
        })
        // 使用定时器
        this.timer = setInterval(() => {
            setTimeout(this.getData(), 0)) // 如果有多个请求,指定执行顺序
        }, 1000) // 1000ms 
    },
    // vue3中使用beforeUnmount
    beforeUnmount() {
        console.log("定时器清除")
        clearInerval(this.timer) // 清除定时器
        this.timer = null
    },
    methods: {
        // 用于请求数据的方法
        getData() {
            getGPSDataApi().then(res => {
                console.log("GPS", res.data)
            })
        }
    }
}
</script>

标签:定时器,console,请求,null,timer,销毁,Vue3,getData
From: https://www.cnblogs.com/cnpolaris/p/17035237.html

相关文章

  • Vue3 中的组件 provide和inject 传值、获取组件实例的方法getCurrentInstance()
     一、 provide和inject1:在父级组件中提供数据     语法:provide('提供给子组件的变量名',提供给子组件的数据)   2:在子级组件中获取收据  ......
  • VUE3.0+Vite 多页面应用配置
    目录VUE3.0+Vite多页面应用配置核心原理多页面应用模式(核心)Vue路由配置(示例)vite.config.js(示例)多页面跳转构建流程代码结构构建流程源码链接VUE3.0+Vite多页面应用配置......
  • vue2,vue3同时监听多个数据变化
    我是使用vue计算属性(computed)将需要监听的数据拼接在一起,再通过watch进行监听1.vue普通写法<template><divid="app"><el-inputv-model.number="valu......
  • C#中线程和定时器的使用记录
    记录学习代码。使用线程,创建一个消息队列阻塞等待消息。使用定时器,每隔一秒钟发送一条消息。监听键盘Esc按键实现程序退出。代码如下:1usingSystem;2usingSy......
  • 嵌入式:ARM定时器
    S3C2410A的PWM定时器定时器概述S3C2410有5个16位定时器,其中定时器0、1、2、3、有PWM功能,定时器4只是一个内部定时器而无输出引脚。定时器0和定时器1具有死区发生器(dead-zone......
  • Vue3单击新增添加新的input
     效果图: 代码:<template><div><inputtype="text"v-for="(item,i)ofitems"v-model="items[i]":key="i"@input="inp"><button@click="onAdd">......
  • Vue3 中的响应式api
    一、setup文件的认识 特点1:script中间的内容就是一个对象特点2:script在第一层定义的方法或者变量=>就是这个对象属性 =>顶层的绑定回被暴露给模板(模......
  • Vue2和Vue3实现响应式原理
    <!DOCTYPEhtml><html> <head> <metacharset="UTF-8"/> <title>Document</title> </head> <body> <scripttype="text/javascript"> //源数据 letpers......
  • vue3+vite配置多页面
    通过配置多页面应用,从而将给子模块依赖分隔开各自加载,可以减少初始资源的请求,加快页面的访问速度。比如我们有很多H5页面,并且相互独立,比如报修,购卡,计价规则等等,那我们如......
  • vite+vue3项目在chrome中debuger源码
    在vue文件的script中打上一个debugger,本以为可以开心的debugger了,结果控制台看到的是这个样子查了一些方案,这样就可以解决了......