是否可以在运行其他代码的同时执行while循环



是否可以在运行其他代码的同时执行while循环?

例如:

var test = true;
log();
function log() {
setTimeout(log, 3000);
test = true;
console.log("Standard log");
}
while ( test == true ) {
console.log("Algo");
}

如果我们运行上面的代码;标准日志";一次,然后连续打印";algo";。相反,我希望它能连续打印";同样";,同时打印";标准日志";每3秒。

while循环似乎取消了任何其他代码——我想这是因为它是同步的,但这只是一个新手的猜测。

有人对如何最好地解决这个问题有什么建议吗?

谢谢!

您必须从主执行线程中取出第二个while循环,您可以使用计时器为零的setInterval来完成这一操作(如果您想稍微放慢循环的速度,也可以使用任何高于此值的计时器!(。

test变为false时,您还需要反转其中的一些代码来取消间隔。

var test = true;
log();
function log() {
setTimeout(log, 3000);
test = true;
console.log("Standard log");
}
let intervalId = setInterval(() => {
if(!test)
clearInterval(intervalId)
console.log("Algo");  
},0)

最新更新