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:'其他值'
})