node.js - 是否可以在运行其他一些代码的同时执行 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 循环取消了任何其他代码 - 我认为这是因为它是同步的,但那是新手的猜测。
有没有人对如何最好地攻击这个有任何建议?
谢谢!
解决方案
您必须将第二个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)
推荐阅读
- python - 查找文件名并将其替换为 C 标准
- python - 在 compareApi 之后获取图像并将数据以匹配的名称存储在数据库中
- php - 如何使用我在android中的gps位置检索存储在mysql db中的最近位置
- python - 检查所有元组是否包含特定值
- android - asynctask 中的赋值在其他函数中显示为 null
- r - R - ggplot,构造手动图例不显示
- leaflet - 将图层和图层控件添加到自定义地图?
- powershell - 执行 PowerShell 代码时出错
- blockchain - 与已通过地址部署的以太坊智能合约交互
- android - HTTP 失败:java.net.SocketException:套接字关闭改造