VUE轮询

一、前言

  • setInterval不会清除定时器队列,每重复执行1次都会导致定时器叠加,会出现网页卡死现象。但是setTimeout是自带清除定时器的,两者结合使用将避免页面卡死。

  • 离开页面时,通过生命周期onUnmounted钩子函数,清除定时器。

二、代码注释详解

xml 复制代码
<template>
  <div class="box">content</div>
</template>
<script setup>
import { ref, reactive, onUnmounted } from 'vue';
const data = reactive({
  setIntervalFlag: null
})
// 获取数据
const getList = () => {
  //这里是请求接口相关逻辑
}
// 首先获取数据一次数据
getList()
// 五秒取一次,轮询更新
data.setIntervalFlag = setInterval(() => {
  // 嵌套定时器,利用setTimeout清除机制
  setTimeout(() => {
    getList()
  }, 0)
}, 5000)

// 组件被卸载后清除定时器
onUnmounted(() => {
  clearInterval(data.setIntervalFlag)
  data.setIntervalFlag = null
})
// const { } = toRefs(data)
</script>
<style scoped lang="scss"></style>
相关推荐
独泪了无痕14 小时前
Vue3中防御XSS攻击的“特效药”-DOMPurify
前端·vue.js·安全
小小199214 小时前
idea 配置less转化为css
前端·css·less
hhb_61814 小时前
Less嵌套避坑:优先级冲突实战解析
前端·css·less
云水一下14 小时前
Vue.js从零到精通系列(五):全局状态管理——Pinia 核心与实践
前端·javascript·vue.js
我不是外星人14 小时前
浅谈我对 AI 发展的看法
前端·ai编程·claude
树獭非懒15 小时前
从N-gram到Transformer:大语言模型架构演进之路
程序员·llm·agent
阿里嘎多学长15 小时前
2026-06-13 GitHub 热点项目精选
开发语言·程序员·github·代码托管
老马聊技术15 小时前
AI对话功能之SpringBoot整合Vue3
vue.js·人工智能·spring boot·后端
甲维斯15 小时前
测一波Kimi K2.7,消耗一周配额!
前端·人工智能·游戏开发
Dick50715 小时前
ROS2 多机器人通用 Driver 层复盘:BaseRobotDriver 到多平台 Mock 切换实现
前端·javascript·机器人