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>
相关推荐
明远湖之鱼26 分钟前
浅入理解跨端渲染:从零实现 React DSL 跨端渲染机制
前端·react native·react.js
悟忧1 小时前
规避ProseMirror React渲染差异带来的BUG
前端
小皮虾1 小时前
小程序云开发有类似 uniCloud 云对象的方案吗?有的兄弟,有的!
前端·javascript·小程序·云开发
QuantumLeap丶1 小时前
《uni-app跨平台开发完全指南》- 05 - 基础组件使用
vue.js·微信小程序·uni-app
Android疑难杂症1 小时前
鸿蒙Notification Kit通知服务开发快速指南
android·前端·harmonyos
T___T1 小时前
全方位解释 JavaScript 执行机制(从底层到实战)
前端·面试
阳懿1 小时前
meta-llama-3-8B下载失败解决。
前端·javascript·html
Qinana1 小时前
🌊 深入理解 CSS:从选择器到层叠的艺术
前端·css·程序员
IT_陈寒1 小时前
Python 3.12新特性实测:10个让你的代码提速30%的隐藏技巧 🚀
前端·人工智能·后端
闲人编程1 小时前
从零开发一个简单的Web爬虫(使用Requests和BeautifulSoup)
前端·爬虫·beautifulsoup·bs4·web·request·codecapsule