如何在NodeJS中创建无限循环

Ard*_*zii 3 loops while-loop settimeout node.js

我在JS上看到了一些关于无限循环的答案,我认为它对我的代码有帮助,但它似乎没有正常工作.我有这个:

var i = 0

while (true) {
  setTimeout(() => {
    i ++
    console.log('Infinite Loop Test n:', i);
  }, 2000)
}
Run Code Online (Sandbox Code Playgroud)

目标是在无限循环中每2秒获取一次日志,但我似乎无法得到任何回报......我在哪里弄错了?

提前感谢您的帮助!

chr*_*con 12

为什么你想要一个while循环呢?要么使用setInterval,要么(更好)创建一个在超时后再次调用自身的函数:

function logEvery2Seconds(i) {
    setTimeout(() => {
        console.log('Infinite Loop Test n:', i);
        logEvery2Seconds(++i);
    }, 2000)
}

logEvery2Seconds(0);

let i = 0;
setInterval(() => {
    console.log('Infinite Loop Test interval n:', i++);
}, 2000)
Run Code Online (Sandbox Code Playgroud)

  • 恕我直言,它的可控性更好,@Ardzii在这种情况下,您还可以更准确地控制它,因为下一次超时仅在功能的其余部分运行之后才安排。 (2认同)
  • @ZzAntáres 接受的解决方案不会添加到堆栈中。如果您在循环函数中添加“console.trace()”,您可以看到它的实际效果。您会注意到堆栈没有增长。对不使用 setInterval 也不使用 setTimeout 的函数执行相同的操作,您可以看到每次迭代的堆栈跟踪都在增长。 (2认同)