0

我需要每 16 分钟运行一次函数,但不是在用户进入页面时运行,而是在特定时间运行。

例如:12:01、12:16、12:31、12:46、13:01、13:16、13:31等...

我怎么做?

updateTodayCharts = setInterval(function () {
    ajax_update( date1 , date2 );
}, 15 * 60 * 1000);

此脚本ajax_update每 15 分钟运行一次。当您在 12:20 访问该页面时,它会在 12:35(12:20 + 15 分钟)运行。

我需要在 12:36 运行这个脚本(所以 11 分钟后不是 15 分钟)

首先,我将计算从现在到下一次更新的时间,然后设置 timeinterval 时间。

4

2 回答 2

4

有两种方法可以做到这一点,一种是存储最后日期,有更短的时间间隔并检查是否已经过了足够的时间,另一种是将setTimeoutsetInterval结合起来,或者类似的结构。

var interval = (new Date().getUTCMinutes() + 59) % 15; // current position
interval = 15 - interval;   // remaining til next position
interval = interval * 60e3; // to ms

interval = window.setTimeout(function () {
    interval = window.setInterval(function () {
        ajax_update( date1 , date2 );
    }, 15 * 60e3);
}, interval);
于 2013-06-14T11:41:23.297 回答
0

检查每分钟的分钟数是否为 1、16、31、46 或任何您想要的,但在这种情况下,分钟数模 15 必须等于 1:

updateTodayCharts = setInterval(function () {
    var d = new Date(),
        min = d.getMinutes();
    if (min % 15 === 1) ajax_update( date1 , date2 );
}, 60 * 1000);
于 2013-06-14T11:36:26.137 回答