js 每天0点只后执行一次请求

有个需求,后台数据每天24点更新一次,所以每天只需要向后台请求一次数据就行了,js要怎么判断过了第二天零点?

想到一个方法

var time = [new Date().getFullYear(), new Date().getMonth() + 1, new Date().getDate()].join('-');

然后请求数据时把时间存到localstorage里,用户刷新页面时把时间从localstorage里拿出来,用

new Date(time).getTime()

对比两个时间大小,
不知道还有没有更简单的方法?

阅读 13.9k
6 个回答

...0.0...

一个计时函数,每24小时执行一次。

获取当前时间new Date().getTime(),在获取当天00:00:00的时间比如今天new Date('2018-01-11 00:00:00'),判断前者是否大于后者就能知道是不是过了0点了撒。

请求网页的时候,启动一个Timeout时间是当前时间距离24点还有多长时间,虽然有小误差但是影响不大,这样就算不刷新页面也自动更新

应该是无论如何都需要存一个时间作为对比了,不过你可以用时间戳

var date = new Date().setHours(24, 0, 0, 0);  // 第二天0点

对比的时候直接

new Date() > date && 执行请求();

或者你可以用cookie,设置第二天0点过期,当没有cookie时就请求一次数据并设置cookie

localStorage里面做个时间标记,然后请求之前比对日期

前台浏览器不可能一直停留一个页面的把。
这个东西后台做比较好,没有限制非要24点的话,后台缓存一个最后访问日期,请求时查询发现这个日期是昨天的,就更新后台数据;
或者就是后台跑脚本定时更新了。

获取的时间最好从服务端拿回..应该会出现客户端的时间不准确的情况吧

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