我有3个功能:
TEST1
,TEST2
,TEST3
我希望每隔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');
}
答案 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);
}