首页 > 解决方案 > 是否可以在运行其他一些代码的同时执行 while 循环?

问题描述

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

例如:

    var test = true;

log();

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

while ( test == true ) {
    console.log("Algo");
}

如果我们运行上面的代码,它会打印一次“标准日志”,然后连续打印“算法”。相反,我希望它连续打印“也”,每 3 秒打印一次“标准日志”。

似乎 while 循环取消了任何其他代码 - 我认为这是因为它是同步的,但那是新手的猜测。

有没有人对如何最好地攻击这个有任何建议?

谢谢!

标签: node.jswhile-loop

解决方案


您必须将第二个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)


推荐阅读