vue3 定时器-定义全局方法 vue+ts

1.创建ts文件

路径:src/utils/timer.ts

完整代码:


import { onUnmounted } from 'vue'type TimerCallback = (...args: any[]) => voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> = new Map()// 创建定时器const setInterval = (callback: TimerCallback,delay: number,...args: any[]): number => {const timerId = window.setInterval(() => callback(...args), delay)timers.set(timerId, timerId)return timerId}// 清除单个定时器const clearInterval = (timerId: number) => {window.clearInterval(timerId)timers.delete(timerId)}// 清除所有定时器const clearAll = () => {timers.forEach((timer) => {window.clearInterval(timer)})timers.clear()}// 组件卸载时自动清理onUnmounted(clearAll)return {setInterval,clearInterval,clearAll}
}

2.挂载到全局属性

路径:src/main.ts

完整代码:

import { createApp } from 'vue'
import App from './App.vue'
import { useGlobalTimer } from './utils/timer'const app = createApp(App)// 挂载到全局属性
app.config.globalProperties.$timer = useGlobalTimer()app.mount('#app')

3.使用方式:

引入全局方法:

import {getCurrentInstance } from 'vue'

const { proxy } = getCurrentInstance()!

使用:

创建定时器:

proxy!.$timer.setInterval(() => { // 需要定时循环的内容 // }, 时间);

 清除定时器:

proxy!.$timer.clearInterval(timerId)

完整代码:

<template></template><script setup lang="ts" name="index">
import {ref, onMounted, onUnmounted, getCurrentInstance} from 'vue';
const {proxy} = getCurrentInstance()!
let timerId: numberonMounted(() => {
//创建定时器timerId = proxy!.$timer.setInterval(() => {//循环内容}, //循环时间);
});
onUnmounted(() => {
//清除定时器proxy!.$timer.clearInterval(timerId)
})
</script>
<style scoped lang="scss"></style>

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

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

相关文章

线性代数证明:把行列式的某一行(列)的k倍加到另一行(列),行列式的值不变

线性代数证明 把行列式的某一行&#xff08;列&#xff09;的k倍加到另一行&#xff08;列&#xff09;&#xff0c;行列式的值不变&#xff1a; 注意五角星的位置要用到另一条性质&#xff1a;若行列式的某一行&#xff08;列&#xff09;的元素都是两数之和&#xff0c;则可以…

webrtc 在线测试, 如何在线拉流测试

1. 如下所示&#xff0c;使用腾讯提供的网页即可&#xff0c;非常赞&#xff0c;测试直播拉流 webrtc协议 WebRTC Player Demo 2.截图&#xff1a;

基于Flask前后端分离智慧安防小区系统

基于Flask前后端分离智慧安防小区系统 本项目是一个基于前后端分离架构的智慧安防小区管理系统&#xff0c;采用现代化的技术栈和完善的功能设计&#xff0c;旨在提供一个高效、安全的小区管理解决方案。 技术架构 前端技术栈 基于Vue 3框架开发参考Geeker-Admin项目的基础…

深入解析 Linux 死锁:原理、原因及解决方案

深入解析 Linux 死锁&#xff1a;原理、原因及解决方案 目录 **深入解析 Linux 死锁&#xff1a;原理、原因及解决方案**前言&#xff1a;一次凌晨 3 点的 “服务器崩溃”&#xff0c;揭开死锁的致命性一、死锁的基础&#xff1a;资源与竞争的 “导火索”1.1 资源&#xff1a;死…

C学习--内存管理

#灵感# 当计算机执行一个程序时&#xff0c;必须有一种方法来存储程序本身和运算所得的数据。 总的来讲&#xff0c;计算机硬件中任何能够存储和检索信息的部分都是存储设备。当前运行的程序存放的存储器称为主存储器&#xff08;primary storage&#xff09;&#xff0c;常常…

使用 Docker Compose 安装 PostgreSQL 16

前面是指南&#xff0c;后面是实际工作日志。 1. 创建 docker-compose.yml 文件 yaml 复制 下载 version: 3.9 services:postgres:image: postgres:16container_name: postgres-16environment:POSTGRES_USER: your_username # 替换为你的用户名POSTGRES_PASSWORD: your…

从数据报表到决策大脑:AI重构电商决策链条

在传统电商运营中&#xff0c;决策链条往往止步于“数据报表层”&#xff1a;BI工具整合历史数据&#xff0c;生成滞后一周甚至更久的销售分析&#xff0c;运营团队凭经验预判需求。当爆款突然断货、促销库存积压时&#xff0c;企业才惊觉标准化BI的决策时差正成为增长瓶颈。 一…

SpringBoot 自动化部署实战:CI/CD 整合方案与避坑指南

引言 在微服务架构盛行的今天&#xff0c;SpringBoot 凭借其开箱即用的特性成为 Java 后端开发的主流框架。然而&#xff0c;随着项目规模扩大&#xff0c;手动部署的效率瓶颈逐渐显现。本文将结合 GitLab CI/CD、Jenkins 等工具&#xff0c;深入探讨 SpringBoot 项目的自动化部…

力扣HOT100之二分查找:35. 搜索插入位置

这道题属于是二分查找的入门题了&#xff0c;我依稀记得一些二分查找的编码要点&#xff0c;但是最后还是写出了一个死循环&#xff0c;无语(ˉ▽ˉ&#xff1b;)…又回去看了下自己当时的博客和卡哥的视频&#xff0c;这才发现自己分情况只分了两种&#xff0c;最后导致死循环…

VS创建Qt项目,Qt的关键字显示红色波浪线解决方法

如图所示&#xff0c;VS2017新创建的Qt项目&#xff0c;编译正常&#xff0c;关键字显示识别失败&#xff0c;显示红色波浪线&#xff0c;编译运行没问题。 解决方法&#xff1a; 如下图所示&#xff0c;C/C -> 常规 -> 附加包含目录 ->添加Qt的Include路径 如下图…

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…

k8s从入门到放弃之HPA控制器

k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率&#xff08;或其他自定义指标&#xff09;来调整这些对象的规模&#xff0c;从而帮助应用程序在负…

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…

ccf中学生计算机程序设计入门篇课后题p164页test(1)-2 输入一个数,统计这个数二进制中1的个数

include <iostream> using namespace std;int main() {int x;int n 0;// 输入数据cin >> x;// 统计x二进制中1的个数for (n 0; x ! 0; x & x - 1) {n;}// 输出结果cout << n << endl;return 0; }程序解释&#xff1a; 输入&#xff1a;程序从标…

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机&#xff08;无人驾驶飞行器&#xff0c;UAV&#xff09;技术的快速发展&#xff0c;其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统&#xff0c;无人机的“黑飞”&…

【Go语言基础【18】】Map基础

文章目录 零、概述一、Map基础1、Map的基本概念与特性2、Map的声明与初始化3、Map的基本操作 二、Map的底层实现三、Map的注意事项 零、概述 Map与其他语言的对比 特性Go mapJava HashMapPython dict并发安全非线程安全&#xff0c;需手动加锁非线程安全&#xff08;Concurre…

Qt客户端技巧 -- 窗口美化 -- 窗口阴影

不解析&#xff0c;直接给示例 窗口设为不边框且背景透明,好用来承载阴影 窗口一个Widget用来作真实窗口的作用&#xff0c;在真实窗口上加上阴影特效 上下两层Widget方式 main.cpp #include <QtCore/qglobal.h> #if QT_VERSION > 0x050000 #include <QtWidget…

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…

华为OD最新机试真题-流水线-OD统一考试(B卷)

题目描述: 有个工厂有m条 流水线,来并行完成n个独立的作业,该工厂设置了一个调度系统,在安排作业时,总是优先执行处理时间最短的作业。 现给定流水线个数m,需要完成的作业数n,每个作业的处理时间分别为t1,.2..n。请你编程计算处理完所有作业的耗时为多少? 当n>m时

区块链技术概述

区块链技术是一种去中心化、分布式账本技术&#xff0c;通过密码学、共识机制和智能合约等核心组件&#xff0c;实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点&#xff1a;数据存储在网络中的多个节点&#xff08;计算机&#xff09;&#xff0c;而非…