Node.js 当其他代码运行时,是否可以执行while循环?

Node.js 当其他代码运行时,是否可以执行while循环?,node.js,while-loop,Node.js,While Loop,当其他代码运行时,是否可以执行while循环 例如: var test = true; log(); function log() { setTimeout(log, 3000); test = true; console.log("Standard log"); } while ( test == true ) { console.log("Algo"); } 如果我们运行上面的代码,它会打印一次“标准日志

当其他代码运行时,是否可以执行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测试=真;
log();
函数日志(){
设置超时(日志,3000);
测试=真;
控制台日志(“标准日志”);
}
让intervalId=setInterval(()=>{
如果(!测试)
clearInterval(有效期间)
控制台日志(“Algo”);

},0)
对不起,我忘了编辑。“”测试“”变量应初始化为false。我希望它也能连续打印“还”,同时每3秒打印一次“标准日志”。使用
setInterval
?@VLAZ,这与setTimeout(log,3000)的方法不一样吗?如果我删除while循环,log()函数会连续打印“标准日志”。除非您不需要通过递归调用
setTimeout
连续重新排队任务-
setInterval
自动重复。但更重要的是,将
while
更改为一个间隔可以使两段代码正常执行,而不会接管UI线程。谢谢@VLAZ,这很有趣。刚刚测试了这段代码,工作完全符合预期。谢谢你的帮助!:)<代码>var测试=错误;log();函数log(){setTimeout(log,3000);test=true;console.log(“标准日志”);}setInterval(()=>{if(test==true){console.log(“Algo”);}},300)谢谢@jamiec!