进入阅读页面二次需求处理
思路
时间乃是时间戳毫秒级别
进入阅读页面
记录当前进入页面的时间
如果是0:0:0 要重置时长
如果不是凌晨,查看今天是否阅读过,如果阅读过要在之前的阅读时长存储一下
更新时长
之前记录了(包含上次)进入页面的时间,在此基础上获取最新的时间并减去进入页面的开始时间得到时长,并在上次时长累加,接下来就是格式化一下,最重要的一点就是要更新最新的时间作为开始时间
离开阅读页面
存储最新时长
清除定时器
为完成的,只是进入了页面进行判断是否是凌晨,如果是在晚上11点进入页面,但是阅读到了凌晨1点,是无法重置时长的,要重置就要在开启定时器做判断,如果到达某一刻了,就重置为0,缓存也要重置
点击查看代码
async startReading() {
let elapsedTimeLocal = await $utils.getStorage('elapsedTime')
const storedTime = parseInt(elapsedTimeLocal)
const currentTime = new Date();
if (currentTime.getHours() === 0 && currentTime.getMinutes() === 0 && currentTime.getSeconds() === 0) {
this.elapsedTime = 0;
await $utils.setStorage('elapsedTime', 0)
} else {
this.elapsedTime = storedTime || 0;
}
this.startTime = currentTime.getTime();
this.timerReadId = setInterval(() => {
this.updateElapsedTime()
}, 1000);
},
async updateElapsedTime() {
const currentTime = new Date();
let currentTImeStamp = currentTime.getTime()
if (currentTime.getHours() === 0 && currentTime.getMinutes() === 0 && currentTime.getSeconds() === 0) {
this.elapsedTime = 0;
await $utils.setStorage('elapsedTime', 0)
} else {
this.elapsedTime += (currentTImeStamp - this.startTime);
}
const formattedTime = $utils.durationFn(this.elapsedTime);
this.durationText = formattedTime
console.log("已用时间:" + formattedTime);
this.startTime = currentTImeStamp;
},
onShow() {
this.startReading()
},
async onHide() {
await $utils.setStorage('elapsedTime', this.elapsedTime)
clearInterval(this.timerReadId)
this.timerReadId = null
},
本文来自博客园,作者:jialiangzai,转载请注明原文链接:https://www.cnblogs.com/zsnhweb/p/17932393.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异