h5中如何在本地一直运行一段计时的脚本,直到页面关闭才会停止计时

最近一个项目中是和android那边同用一套接口,每个接口是需要一个参数:timestamp传给后台进行比较。
为了减少服务器的压力和减少请求次数,需要客户端本地在接受到一次timestamp后就在本地进行计时,以便在后面的每次接口请求中带上这个参数,但是我目前没有采用单页面的框架,如何才能做到这点呢?

阅读 4k
2 个回答

setTimeout/setInterval计时是不精确的,传给后端的时间会有误差。另一种做法是,你可以在第一次接收到timestamp时将时间戳和当前时间存储到sessionStorage,比如

var timeCached = sessionStorage.setItem('timeCached', JSON.stringify({
    serverTime: timestamp, 
    clientTime: +new Date()
});

然后每次请求时,通过计算

var timeCached = sessionStorage.getItem('timeCached');
// 计算出被发送时的时间戳
var newTimestamp=(+new Date() - timeCached.clientTime) + timeCached.timestamp;

就可以得到相对正确的时间戳了。其它的细节,比如时间相减的结果可能要除1000,封装个函数进行接口请求时计算,这就看你具体情况怎么写了。

非单页面的话就实时储存到localStorage。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题