gpt4 book ai didi

javascript - 如何将连续的 setInterval() 包装在一个永远的循环中?

转载 作者:搜寻专家 更新时间:2023-10-31 23:50:41 25 4
gpt4 key购买 nike

我试图实现一个功能,该功能应该每 5 秒发布一次测量 A,持续 10 次,然后每 5 秒发布一次测量 B,持续一段随机时间。当我试图实现一个假代理时,我想永远重复这个功能。

所以我有代码:

let intervalId = null, repeat = 0;
while (true) {
intervalId = setInterval(() => {
if (repeat < 5) {
// post measurement A
repeat += 1;
}
else {
clearInterval(intervalId)
}
}, 1000);

repeat = 0;
intervalId = setInterval(() => {
if (repeat < Math.floor(Math.random() * 11)) {
// post measurement B
repeat += 1;
}
else {
clearInterval(intervalId)
}
}, 1000);
}

这两个setInterval() 函数并没有像我预期的那样连续发生,而是同时发生。而且 while (true) 循环似乎也没有按预期运行。我只是想知道有没有办法解决这个问题?谢谢。

最佳答案

您可以创建两个函数,一个是doA(),一个是doB()

doA()开始,统计//do A被调用的次数,当达到10时, clearInterval 并调用 doB()

doB() 中,设置 minmax 应该被调用的时间,然后当它到达 randTime clearIntervaldoA()

function doA() {

let count = 0;
const a = setInterval(() => {
//do A
console.log('do A');
count += 1;
if (count === 10) {
clearInterval(a);
doB();
}
}, 5000/10);

}
function doB() {
// set your min and max for B
const minTime = 1;
const maxTime = 10;
const randTime = Math.floor(Math.random() * (maxTime - minTime + 1)) + minTime;
let count = 0;
const b = setInterval(() => {
// do B
console.log(randTime);
console.log('do B');
count += 1;
if (count === randTime) {
clearInterval(b);
doA();
}
}, 5000 / randTime);
}
doA();

关于javascript - 如何将连续的 setInterval() 包装在一个永远的循环中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50846058/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com