前端 - 页面第一次启动定时器加快,从其它页面再回来又恢复正常,请问这是什么原因?
问题描述:
我写了一个点餐平台,其中有一个外卖订单模块,里面有四个订单计时器和倒计时,我用定时器写的,有倒计时15分钟,但是发现当第一次启动页面的时候倒计时跑的很快,差不多一秒跑两秒,当从别的模块在回到外卖订单模块倒计时又恢复正常,请问这是什么原因?
第 1 个答案:
创建定时器之前先判断 是否已经存在定时器
let timerId; // 全局变量保存计时器 ID function startTimer() { if (!timerId) { // 如果定时器不存在,则创建定时器 timerId = setInterval(updateTimer, 1000); } } function stopTimer() { clearInterval(timerId); // 清除定时器 timerId = null; // 重置全局变量 } function updateTimer() { // 更新计时器的值 }
第 2 个答案:
现在的浏览器都有一些节能设计,当你离开当前页面,它就进入低功耗状态,里面的执行速率会降低,计时器是最明显的一个。
解决方案是:
- 记录计时器开始的时间
- 侦听页面的
visibilitychange
事件,当用户返回的时候,校准时间
不过仔细看了你的问题,是启动的时候不正常,回来又正常了?那感觉是你代码写的有问题……
这个页面中:检验相关、检查相关是两个选项卡,点击某一个,会默认按七天去接口拿数据,也就是说这个页面一打开,就需要调用数据叫下面的数据显示,我想要的效果是第一次打开会调数据拿数据,如果去其它页面再回到这个页面会就 ...