首页 > 其他分享 >进入阅读页面二次需求处理

进入阅读页面二次需求处理

时间:2023-12-28 11:57:14浏览次数:44  
标签:重置 const 二次 utils currentTime elapsedTime 阅读 页面

思路
时间乃是时间戳毫秒级别
进入阅读页面
    记录当前进入页面的时间
    如果是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
    },

标签:重置,const,二次,utils,currentTime,elapsedTime,阅读,页面
From: https://www.cnblogs.com/zsnhweb/p/17932393.html

相关文章

  • 《代码阅读方法与实践》读后感2
    《代码阅读方法与实践》是一本很好的书,通过深入讨论代码阅读的方法和实践,提供了许多对于提高编程技能和代码理解能力有益的见解。以下是一个可能的读后感:《代码阅读方法与实践》这本书为我打开了代码阅读的新视角,深刻地解释了阅读代码的方法和实践。通过这本书,我不仅仅学到了如何......
  • 12.27阅读笔记《软件需求分析》
    许多工程项目不能按时完成或者最后导致失败的一个很大的原因就是弄不清需求是什么,不能准确理解客户的需求意图,所以前期做好需求调研是一件非常重要的工作,是一件与系统代码开发占有同等比重的工作。读这本书的同时,要注意实践过程,不必非得要从一个新项目开始应用,可以找一个以前......
  • # ReentrantLock源码阅读
    ReentrantLock源码阅读目录ReentrantLock源码阅读简介例子代码分析Sync.tryLockSync.initialTryLockSync.lockSync.tryReleaseNonFairSync.initialTryLockNonFairSync.tryAcquireFairSync.initialTryLockFairSync.tryAcquire参考链接本人的源码阅读主要聚焦于类的使用场景,一般只......
  • Python采集html页面时如何去除掉script,link等指定html标签
    python爬虫去除html中特定标签、去除注释、替换实体前言:本文主要讲w3lib库的四个函数html.remove_tags()html.remove_tags_with_content()html.remove_comments()html.remove_entities()remove_tags作用:去除或保留标签,但是仅仅是去除标签,正文部分是不做处理的 看其函数......
  • WPF中实现页面跳转
    `WPF中实现页面跳转WPF是WindowsPresentationFoundation的缩写,是微软推出的一种用于创建桌面应用程序的技术。WPF中有一个重要的概念就是页面(Page),它可以让我们在一个窗口(Window)中显示不同的内容,实现类似于网页浏览器的效果。页面跳转就是指从一个页面切换到另一个页面的过程。......
  • vite+vue3 打包后页面空白现象
    使用vite打包之后运行index.html空白,打开控制台发现报错:解决方法:在vite.config中加入:publicPath:'./',这是vite.config中的结构: exportdefaultdefineConfig({publicPath:'./',lintOnSave:false,transpileDependencies:true,plugins:[......
  • AbstractQueuedSynchronizer源码阅读
    AbstractQueuedSynchronizer源码阅读目录AbstractQueuedSynchronizer源码阅读例子Overview-CLH锁Overview的剩余内容代码分析cleanQueueacquireacquire总结acquire共享模式补充release内部类ConditionObject参考链接本人的源码阅读主要聚焦于类的使用场景,一般只在java层面进行分......
  • React 页面崩溃问题
    今天遇到一个页面崩溃问题,很神奇的是初始化打开的时候会崩溃,但是切到其他内容,再切回来又好了因为React是prod的版本,所以报错其实没卵用,最后定位到这个代码上:尝试了下,一个组件,returnnull或者returnfalse都是work的,但是returnundefined就不行了,而上图中前者可能会......
  • WebView中的页面调试方法
    在iOS12中,苹果正式弃用UIWebView,改成WKWebView,参考官方声明。后者在性能、稳定性、功能方面有很大提升,并且与Safari具有相同的JavaScript引擎(JavaScriptCore)。从Android4.4开始,增加ChromiumWebView,用来取代AndroidWebKitWebView。从Android......
  • 如何从Word中的整个文档中选择页面范围?
    转自:如何从Word中的整个文档中选择页面范围?如果要在Word文档中选择任何页面范围,可以用几种方法完成它?现在,我介绍一些技巧,供您选择MicrosoftWord中的页面范围。按住Shift键并在Word中选择页面范围使用VBA选择页面范围选择一系列页面KutoolsforWord 按住Shift键并在Word......