当前位置: 首页 > news >正文

vuejs: 解决浏览器切换页面后setInterval计时器停止执行的问题

setInterval定时器是基于当前页面的,如果切换到其他页面,定时器会被暂停。这是浏览器的一种优化措施,以减少不必要的性能消耗。
如果需要在切换页面后继续执行定时器,可以使用Web Worker,它是在后台运行的程序,不受页面切换影响。在Web Worker中,可以使用定时器setInterval来执行某些操作。
Worker-Loader插件的主要作用是将我们的JavaScript文件转换为Web Worker线程。它可以将我们的JavaScript文件打包成一个独立的文件,该文件可以在Web Worker中运行。
1、安装:

npm install worker-loader -D

2、配置:在webpack.base.config.js文件中,

rules:[{test: /\.worker\.js$/,use: { loader: "worker-loader" },},
]

3、创建js文件:my.worker.js

var timer = null;
self.addEventListener('message', function (e) {if (e.data.type == 'start') {var interval = e.data.interval;timer = setInterval(function () {self.postMessage({ type: 'message' });}, interval);}if (e.data == 'stop') {clearInterval(timer);timer = null;self.postMessage({ type: 'stop' });}
}, false);

vue文件中引入并使用

import myWorker from "./my.worker.js";
const Worker = new myWorker();
Worker.postMessage({type: "start",interval: 1000
});
Worker.onmessage = (event)=> {// 收息消息if (event.data.type == 'message') {// TODO: 收到消息后}// 结束命令if (event.data.type == 'stop') {// TODO: STOP}
};
http://www.lryc.cn/news/248862.html

相关文章:

  • 基于Web邮箱的邮件系统
  • 【Java学习笔记】75 - 算法优化入门 - 马踏棋盘问题
  • 第二十章 多线程
  • vue2使用npm依赖包导出xlsx文件
  • java--多态
  • 知识图谱06——将pdf中的表格(文字形式)保存至csv中
  • 一文教你使用Swagger---适合新手小白(结合实战)
  • VC++调试QT源码
  • 058-第三代软件开发-文件Model
  • 【领域驱动设计 学习目标及大纲】从CRUD到架构设计
  • asla四大开源组件应用示例(alsa-lib、alsa-utils、alsa-tools、alsa-plugins)
  • 文档理解的新时代:LayOutLM模型的全方位解读
  • 【二叉树】Leetcode 637. 二叉树的层平均值
  • 设计模式-15-Jdk源码中的设计模式
  • Vue框架学习笔记——事件scroll和wheel的区别
  • 【LeetCode】每日一题 2023_11_29 无限集中的最小数字(哈希/堆)
  • C/C++ 常用的四种查找算法
  • Linux | Ubuntu设置 netstat(网络状态)
  • 成为AI产品经理——模型构建流程(下)
  • TCP Socket API 讲解,以及回显服务器客户端的实现
  • 2023年掌控安全学院CTF暖冬杯——数据流分析
  • UE4 基础篇十四:自定义插件
  • QT QGraphicsItem 图元覆盖导致鼠标点击事件不能传递到被覆盖图元
  • proto语法学习笔记
  • python-nmap库使用教程(Nmap网络扫描器的Python接口)(功能:主机发现、端口扫描、操作系统识别等)
  • 什么是智慧工地?
  • 【古月居《ros入门21讲》学习笔记】08_发布者Publisher的编程实现
  • 沿着马可·波罗的足迹,看数字云南
  • 记录问题-使用@Validated报错Validation failed for argument [0]
  • three.js--立方体