我有两个功能,需要每30秒执行一次功能。
示例,执行title()
并在30秒后执行subtitle()
,30秒后title()
。
我需要使用setInterval()
来执行这些功能。
答案 0 :(得分:2)
function a() { document.write('a ') }
function b() { document.write('b ') }
function c() { document.write('c ') }
fns = [a, b, c]
inter = setInterval(function() {
fns[0]();
fns.push(fns.shift());
}, 1000);
答案 1 :(得分:0)
UPD 刚想通了,你必须使用setInterval。因此,乔治的回答是目前最好的。
我提出了这个快速解决方案。
var functions = [title, subtitle];
(function loop(i) {
functions[i]();
setTimeout(loop, 30e3, Number(!i));
})(0);
有一个由2个函数(标题和副标题)组成的元组和一个循环函数,它立即调用第一个函数,然后启动一个30秒的计时器,用第二个函数的索引再次调用self。
目前,这是一次无限递归。 唯一的限制是callstack大小。
答案 2 :(得分:0)
使用setInterval您可以使用简单的标志来执行此操作。
var flag = true;
function title() {
console.log('title');
}
function subtitle() {
console.log('subtitle');
}
function wrapper() {
if(flag) {
title();
} else {
subtitle();
}
flag = !flag;
}
setInterval(wrapper, 30000);