6

我有一个每分钟运行一次的 javascript 函数。

setInterval(function(){

  //first, check time, if it is 9 AM, reload the page
   var now = new Date();
   if (now.getHours() == 9 {
      window.refresh();
   }

  //do other stuff

},60000);

现在的问题是,我希望每天只进行一次重新加载。由于该功能每分钟运行一次,因此下次启动时,如果在上午 9 点到 10 点之间,它将再次重新加载页面。如何使重新加载只发生一次?

我可以通过创建另一个每小时触发一次的间隔函数并检查是否应该重新加载来做到这一点。但是由于我已经拥有每分钟运行的上述功能,我可以从那里开始吗?

如果我最终创建了另一个每小时检查一次的函数。如果这两个函数同时启动会发生什么?

4

3 回答 3

9

我会存储最后一次刷新的日期,计算差异,它不到 6 小时(为了安全起见)你不需要刷新。

var lastRefresh = new Date(); // If the user just loaded the page you don't want to refresh either

setInterval(function(){

  //first, check time, if it is 9 AM, reload the page
   var now = new Date();
   if (now.getHours() == 9 && new Date() - lastRefresh > 1000 * 60 * 60 * 6) { // If it is between 9 and ten AND the last refresh was longer ago than 6 hours refresh the page.
      location.reload();
   }

  //do other stuff

},60000);

我希望这就是你的意思。请注意,这是未经测试的。

于 2013-02-22T20:00:47.213 回答
1

无需使用更复杂的解决方案以更好的方式完成此操作,您可以使用 getDay() 并将其保存在 cookie 中,以便您可以检查最后一次调用此方法是否是同一天,仅此方式您将在上午 9 点之后的第二天和另一天。

于 2013-02-22T20:01:08.647 回答
-4

它在 C# 中。该算法将是:

  1. 在 C# 中创建一个计时器,它在第 N 小时运行(例如,上午 10:00、下午 14:00 等)
  2. 您检查时间是否为 X 小时(在本例中为上午 9:00)。
  3. 如果是,则刷新页面。
于 2013-02-22T20:29:19.973 回答