3个函数每90分钟重复一次,间隔30分钟

时间:2015-11-16 11:35:10

标签: javascript

我有3个功能:    TEST1TEST2TEST3

我希望每隔x分钟以30分钟的间隔从1到3循环。目前3x30min = every 90min

循环应该是增量而不是随机的,并且以固定设置间隔开始,并且在脚本启动时从第一个TEST1开始

我没有找到任何可行的解决方案,这对于node.js而且我尝试使用模块重复,短暂的间隔最小15分钟将工作更长的持续时间将无法重复。

function TEST1(){
console.log('Test 1 Works');
}

function TEST2(){
console.log('Test 2 Works');
}

function TEST3(){
console.log('Test 3 Works');
}

3 个答案:

答案 0 :(得分:2)

函数Test1()立即启动。其他功能遵循它们之间30分钟的间隔。此过程以固定的间隔集重复。

var cycles = [90, 90]  // Fixed set of intervals
var i = 0;

function start() {

    TEST1();  //Starts as the script starts
    setTimeout(TEST2, 30 * 60 * 1000);  // In 30 minutes
    setTimeout(TEST3, 60 * 60 * 1000);  // In 60 minutes

    setTimeout(start, cycles[i] * 60 * 1000);  //start function is repeated according to the values of "cycles" array   

    //Cycle incrementing
    i++;
    if (i === cycles.length)
       i = 0;


}

答案 1 :(得分:1)

您可以使用setTimeout(func, delay)在N毫秒后调用某个功能

function main() {
    setTimeout(TEST1, 30 * 60 * 1000); // 30 min in miliseconds
    setTimeout(TEST2, 60 * 60 * 1000); // 60 min in miliseconds
    setTimeout(TEST3, 90 * 60 * 1000); // 90 min in miliseconds
    // call main again to repeat the process
    setTimeout(main, 120 * 60 * 1000); // 120 min in miliseconds
}

但请注意@Lix写的是:

  

如果您唯一需要的是定期执行某段代码,那么系统级调度程序可能就是您应该关注的......也许是cron作业。

答案 2 :(得分:0)

这样的事情:



var functions = [test1, test2, test3];
var interval = 1000; // Change to whatever interval you want
var index = 1;

test1();

setInterval(function() {
  functions[index].call(this, null);
  index = index === functions.length - 1 ? 0 : ++index;
}, interval);

function test1() {
  print('Test 1');
}

function test2() {
  print('Test 2');
}

function test3() {
  print('Test 3');
}

// Helper function for debugging purposes
function print(text) {
  var el = document.createElement('p');
  el.textContent = text;
  document.body.appendChild(el);
}