【前端】为什么我的定时器在后台运行误差严重 - 浏览器限制后台页面定时器运行速度

【前端】为什么我的定时器在后台运行误差严重 - 浏览器限制后台页面定时器运行速度

为什么我的定时器在后台运行误差严重?

定时器(如 setTimeoutsetInterval)是前端开发中常用的工具,它们允许我们在设定的时间后执行代码。但是,笔者最近遇到了一个共同的问题:当页面变为后台运行的时候,定时器会突然不准确,不足一分钟的定时器会变为定时一分钟左右。这篇文章将深入探讨背后的原因,并提供一些解决方案。

浏览器的节能机制

现代浏览器非常注重性能和能源效率,尤其是当涉及到后台标签页或者非激活窗口的时候。为了减少计算资源的使用,节省电池寿命,浏览器实施了一些限制措施,其中之一就是降低后台页面的定时器精度。

定时器在后台的运行行为

当你的页面转入后台运行后,浏览器可能会:

  • 增加最小定时器延迟
  • 降低定时器唤醒频率
  • 在某些情况下完全暂停定时器

例如,Chrome 浏览器在后台标签的 setTimeout/setInterval 函数调用中,会将最小延迟时间设置为1分钟。这意味着无论你将延迟时间设为多少,定时器实际执行的间隔都将不会小于 1 分钟。

实际影响

对于需要精准定时的情况,比如游戏、动画,或某些实时同步应用,这会造成大问题。用户在将页面切换到后台之后,再次返回时,会发现计时器显示异常,或者定时触发的动作延迟执行。

解决策略

  1. Web Workers
    Web Workers 在大多数的浏览器中运行在后台线程,不受前台 UI 渲染的干扰。使用 Web Workers 可以让定时器任务在后台精准运行。

  2. WebRTC 或 WebSockets
    如果你在开发实时通信应用,可以使用 WebRTC 或 WebSockets,这些技术专为实时通信设计,提供更稳定的连接和定时,即使在后台也能保持连接。

  3. Service Workers
    Service Workers 运行于浏览器后台,可以用作执行消息推送和后台同步任务,但并不适合周期性的短时定时任务。

  4. 请求动画帧 (requestAnimationFrame)
    对于动画,requestAnimationFrame 是更佳的选择。它会在浏览器准备好进行下次重绘时调用函数,因此在标签页处于非激活状态时将不会执行,这符合我们对于动画的需求。

  5. Alarm API (实验性 API)
    移动平台上,Web 应用可以尝试使用 Alarm API 定时执行事件,但需要注意这是一个实验性 API。

  6. Chrome唤醒定时器API (实验性 API)
    Chrome 考虑到了后台定时器的必要性,因此在其实验性定时器API中提供了唤醒定时器的能力,但它仍然是实验性的。

结论

当页面进入后台,浏览器出于性能和能效考虑限制定时器的运行。开发者可以通过选择正确的工具和技术来设计更加健壮和用户友好的应用。在编写对时间敏感的应用时,开发者需要仔细考虑和测试其在各种环境下的运行情况。

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

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

相关文章

java steam 的使用

说steam 前看下kotlin的一个写法如果用java怎么写 fun main() {// 创建一个列表val fruits listOf("Apple", "Banana", "Cherry", "Date", "Elderberry")// 使用 Sequence 进行过滤和映射操作val uppercaseFruitLengths …

怎么用图片生成二维码?扫描二维码看图片怎么制作?

现在将多张图片放到二维码中,通过扫码的方式预览是现在很常见的一种方式,那么如何生成图片、照片的二维码呢?对于图片二维码制作感兴趣的小伙伴,可以跟着小编来学习下面的制作技巧,借助网上的二维码生成器工具的功能&a…

基于LLaMA Factory,单卡3小时训练专属大模型 Agent

大家好,今天给大家带来一篇 Agent 微调实战文章 Agent(智能体)是当今 LLM(大模型)应用的热门话题 [1],通过任务分解(task planning)、工具调用(tool using)和…

还在纠结怎么选随身WiFi的,看看这个!随身WiFi靠谱榜第一名推荐!哪个随身WiFi最好用

你是不是还在头疼如何挑选一个靠谱好用的随身WiFi呢?市场上的随身WiFi产品五花八门,每次购买随身WiFi都会被坑,差点就失去购买的信心了~别灰心,一篇文章教你如何挑选一个靠谱好用的随身WiFi! 一、5大购买原则&#xff…

Imagenet-A,Imagenet-C和ImageNet-O

Imagenet-A ImageNet-A 数据集包含由 ResNet 模型错误分类的真实世界、未经修改和自然发生的示例。该数据集包含 7,500 张经过对抗性过滤的图像,很容易导致机器学习模型的性能显著下降。 Imagenet-C 对ImageNet 1K添加了一些常见的图像损坏(如模糊和噪…

【QT+QGIS跨平台编译】之一:【sqlite+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

文章目录 一、sqlite3介绍二、文件下载三、文件分析四、pro文件五、编译实践一、sqlite3介绍 SQLite是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且已经在很多嵌入式…

蓝桥杯备战——1.点亮LED灯

1.解析原理图 由上图可以看到8个共阳LED灯接到了573输出口,而573输入接到单片机P0口上。当573 LE脚输入高电平时,输出随输入变化,当LE为低电平时,输出锁存。 由上图可以看到Y4C接到了或非门74HC02的输出端,而输入端为…

API设计模式:REST、GraphQL、gRPC与tRPC全面解析

一、引言 在现代Web和微服务架构中,API(应用程序编程接口)的设计和实现方式至关重要。本文将探讨四种流行的API设计模式:REST(Representational State Transfer)、GraphQL、gRPC以及新兴的tRPC。每种模式都…

HCIA——27E-mall、MIME;POP3、IMAP的选择,解答

学习目标: 计算机网络 1.掌握计算机网络的基本概念、基本原理和基本方法。 2.掌握计算机网络的体系结构和典型网络协议,了解典型网络设备的组成和特点,理解典型网络设备的工作原理。 3.能够运用计算机网络的基本概念、基本原理和基本方法进行…

DAY22xss2

远程调用xss平台网站需要在意是http还是https协议 cookie的利用 1.抓包利用 2.特定浏览器活软件 这个浏览器的使用教程 点进去之后再点击这个 然后我们开始 利用cookie cookie有几个值我们就添加几个 3.浏览器插件 遇到的突发情况 例如空白 404 这个时候我们要有种思…

开源元数据管理平台Amundsen安装

Amundsen 是一个用于数据发现和元数据管理的开源平台。Amundsen是一个用于提高数据分析师、数据科学家和工程师在与数据交互时的生产力的数据发现和元数据引擎。目前,它通过索引数据资源(表、仪表板、流等)并基于使用模式(例如,高频查询的表会比低频查询的表更早显示)提供…

sql server 查询所有表的记录条数

DECLARE tableName NVARCHAR(MAX) DECLARE sql NVARCHAR(MAX) CREATE TABLE #TempTable (TableName SYSNAME, RowCounts BIGINT) -- 遍历所有用户表 DECLARE TableCursor CURSOR FOR SELECT t.NAME FROM sys.tables t WHERE t.is_ms_shipped 0 -- 过滤掉系统表 AND t.name…

考研机试 阶乘的和

考研机试 阶乘的和 给定一个非负整数 n,请你判断是否存在一些整数 xi,能够使得 n∑1≤i≤txi!,其中 t≥1,xi≥0,xixj iff ij。iff表示当且仅当。 输入格式 输入包含多组测试数据。 每组数据占一行,包含一个非负整数 n。 最后一行…

SpringBoot,TDengine时序数据库,实现物联网,车联网大批量数据更新最佳实践。

简介 TDengine 是一款专为物联网、工业互联网等场景设计并优化的大数据平台,它能安全高效地将大量设备、数据采集器每天产生的高达 TB 甚至 PB 级的数据进行汇聚、存储、分析和分发,对业务运行状态进行实时监测、预警,提供实时的商业洞察。其…

【影像组学入门百问】#73--#77

#73-PyRadiomics可以提取哪些类别的影像组学特征? 1,第一阶统计特征(First-order statistics):这些特征反映了图像的基本属性,主要通过对感兴趣区域(ROI)内的像素强度值进行统计分析而获得。包…

一台PC创建多个Git平台账号

因为工作需要,需要使用Gitlab,所以公司的项目都是使用Gitlab来提交代码的;但是平时自己想学习研究一些东西是使用的Gitee,所以需要在一台电脑上配置多个Git平台账号,以下是配置的步骤: 删除Global的设置 …

tp5中使用ueditor编辑器保存文本到数据库后编辑时数据回显显示html标签问题解决办法

数据表中保存的数据为带html标签的源码&#xff0c;如图&#xff1a; 编辑器页面需要的内容&#xff1a; <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> <html> <head><…

[力扣 Hot100]Day13 最大子数组和

题目描述 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 子数组 是数组中的一个连续部分。 出处 思路 使用动规思想&#xff0c;维护局部和&#xff0c;当局部和小于零…

“Fade away“

"Fade away"是一个常见的英语短语&#xff0c;它可以在不同的情境中有不同的含义&#xff1a; 逐渐消失或消散&#xff1a;在字面上&#xff0c;"fade away"可以用来描述一种缓慢减少直至完全消失的过程。这可能是指实际的物体、声音、光线&#xff0c;或者…

网络通信课程总结(小飞有点东西)

27集 局域网通信&#xff1a;用MAC地址 跨局域网通信&#xff1a;用IP地址&#xff08;MAC地址的作用只是让我们找到网关&#xff09; 又因为arp技术&#xff0c;可以通过MAC地址找到IP地址&#xff0c;所以我们可以通过IP地址定位到全世界任意一台计算机。 28集 在数据链路…