我需要每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);
此脚本每15分钟运行一次ajax_update
。当您在12:20访问该页面时,它将在12:35(12:20 + 15分钟)运行。
我需要在12:36运行此脚本(所以11分钟后不是15)
首先,我将计算从现在到下次更新的时间,然后设置时间间隔时间。
答案 0 :(得分:4)
有两种方法可以做到这一点,一种是存储上次日期,间隔时间较短并检查足够的时间,另一种方法是将 setTimeout 与 setInterval ,或类似的这种结构。
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);
答案 1 :(得分: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);