javascript - h5中如何在本地一直运行一段计时的脚本,直到页面关闭才会停止计时
ringa_lee
ringa_lee 2017-04-11 11:31:00
[JavaScript讨论组]

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

ringa_lee
ringa_lee

ringa_lee

全部回复(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,封装个函数进行接口请求时计算,这就看你具体情况怎么写了。

ringa_lee

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号