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_update15 分ごとに実行されます。12:20 にページにアクセスすると、12:35 (12:20 + 15 分) に実行されます。

このスクリプトを 12:36 に実行する必要があります (15 分ではなく 11 分後)。

最初に、今から次の更新までの時間を計算し、timeinterval 時間を設定します。

4

2 に答える 2

4

これを行うには 2 つの方法があります。1 つは最後の日付を保存し、間隔を短くして十分な時間が経過したことを確認する方法です。もう 1 つは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 に答える