为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

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

1 回答

?
临摹微笑

TA贡献1982条经验 获得超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,封装个函数进行接口请求时计算,这就看你具体情况怎么写了。


查看完整回答
反对 回复 2018-11-11
  • 1 回答
  • 0 关注
  • 768 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信