Node.js 当其他代码运行时,是否可以执行while循环?
当其他代码运行时,是否可以执行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"); } 如果我们运行上面的代码,它会打印一次“标准日志
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!