Javascript 每30秒运行一次结果不同的代码

Javascript 每30秒运行一次结果不同的代码,javascript,node.js,Javascript,Node.js,我有两个变量,分别是var1和var2: var var1='foo'; var var2=‘bar’; 我希望能够每隔30秒将其中一个变量记录到控制台,并交替记录变量(这里有一些伪代码): 将var1记录到控制台 等30秒 将var2记录到控制台 等30秒 重复 有办法吗?我认为我应该做一些与setInterval相关的事情,但我的解决方案是: setInterval(函数(){ console.log(var1); 设置超时(()=>{ console.log(var2); }, 3000

我有两个变量,分别是
var1
var2

var var1='foo';
var var2=‘bar’;
我希望能够每隔30秒将其中一个变量记录到控制台,并交替记录变量(这里有一些伪代码):

将var1记录到控制台

等30秒

将var2记录到控制台

等30秒

重复

有办法吗?我认为我应该做一些与
setInterval
相关的事情,但我的解决方案是:

setInterval(函数(){
console.log(var1);
设置超时(()=>{
console.log(var2);
}, 30000);
}, 60000);

这似乎不是最好的解决办法。有没有更有效的方法可以做到这一点?

只需保留计数器,使您能够进行替换

var计数器=0;
var var1=“一!”;
var var2=“两个!”;
无功频率=1000//1000用于举例说明
setInterval(函数(){
如果(计数器+++%2==0){
console.log(var1);
}否则{
console.log(var2);
}

},频率)只需保留允许您进行替换的计数器即可

var计数器=0;
var var1=“一!”;
var var2=“两个!”;
无功频率=1000//1000用于举例说明
setInterval(函数(){
如果(计数器+++%2==0){
console.log(var1);
}否则{
console.log(var2);
}

},频率)
您可以将
setTimeout
与两个相互调用的函数一起使用:

var var1='foo';
var var2=‘bar’;
常量log1=()=>{
console.log(var1);
设置超时(log2,30000)
}
常量log2=()=>{
console.log(var2);
设置超时(log1,30000)
}

log1()
您可以将
setTimeout
与两个相互调用的函数一起使用:

var var1='foo';
var var2=‘bar’;
常量log1=()=>{
console.log(var1);
设置超时(log2,30000)
}
常量log2=()=>{
console.log(var2);
设置超时(log1,30000)
}

log1()这里有一种更通用的方法:对于给定的值列表,它将永远以一个周期打印提供的值,并在每次打印之间等待
间隔

/**
 * 
 * @param {Array} values - collection of values to log
 * @param {Number} intervalMs - the log interval
 */
function logValuesCyclicForever(values, intervalMs = 30000) {
  let index = 0;
  return setInterval(() => {
    console.log(values[index]);
    index = (index + 1) % values.length; // sets the location back to 0 when the last element is printed.
  }, intervalMs);
}

var var1 = 'foo';
var var2 = 'bar';

logValuesCyclicForever([var1, var2]); // for your use case

这里有一种更通用的方法:对于给定的值列表,它将永远以一个周期打印提供的值,并在每次打印之间等待
intervals

/**
 * 
 * @param {Array} values - collection of values to log
 * @param {Number} intervalMs - the log interval
 */
function logValuesCyclicForever(values, intervalMs = 30000) {
  let index = 0;
  return setInterval(() => {
    console.log(values[index]);
    index = (index + 1) % values.length; // sets the location back to 0 when the last element is printed.
  }, intervalMs);
}

var var1 = 'foo';
var var2 = 'bar';

logValuesCyclicForever([var1, var2]); // for your use case

您希望使用
setInterval
,以便间隔一致,并且在确定下一个异步调用的时间时不涉及执行时间

您可以将对象引用传入控制范围,还可以跟踪布尔值并将其翻转:
setInterval(函数(a){
a、 bool=!a.bool
如果(!a.bool){
console.log(a.var1)
返回
} 
console.log(a.var2)
}, 3000, {
布尔:是的,
var1:'值',
var2:'其他值'

})
您希望使用
setInterval
以使间隔一致,并且在确定下一个异步调用的时间时不涉及执行时间

您可以将对象引用传入控制范围,还可以跟踪布尔值并将其翻转:
setInterval(函数(a){
a、 bool=!a.bool
如果(!a.bool){
console.log(a.var1)
返回
} 
console.log(a.var2)
}, 3000, {
布尔:是的,
var1:'值',
var2:'其他值'
})