为什么 while 循环中的 setInterval 会变成无限循环(JS)?
Why setInterval inside a while loop become an infinite loop (JS)?
我试图拨打延迟的“一个”电话或“一个或两个?”问题,而是函数 运行 无限期地启动,尽管没有 setInterval 一切正常。
quester2()
function quester2() {
for (i = 0; i <= finalCount; i++) {
let K = Math.ceil(Math.random() * 2);
if (K == 1) {
setInterval(function () { console.log("one"); }, 1000);
finalCount += 1;
allIterations += 1;
setInterval(function () { console.log("one or two?"); }, 1000);
} else {
setInterval(function () { console.log("one or two?"); }, 1000);
allIterations += 1;
}
}
console.log(finalCount);
console.log(i);
}
没有无限循环,与之前的 运行 相比,您的代码可能只是随机地进行了更多次迭代。您有时会增加 finalCount
,这与 for
循环的条件有关。
看起来像无限循环的是您 运行 相当多的 setIntervals 并且从不清除它们。但是如果你仔细检查你的控制台,你基本上会在调用该函数后立即看到最后两个日志语句的两个输出。一秒钟之后,您开始看到无数个“一个”和“一个或两个?”。
quester2()
0
1
one or two?
我试图拨打延迟的“一个”电话或“一个或两个?”问题,而是函数 运行 无限期地启动,尽管没有 setInterval 一切正常。
quester2()
function quester2() {
for (i = 0; i <= finalCount; i++) {
let K = Math.ceil(Math.random() * 2);
if (K == 1) {
setInterval(function () { console.log("one"); }, 1000);
finalCount += 1;
allIterations += 1;
setInterval(function () { console.log("one or two?"); }, 1000);
} else {
setInterval(function () { console.log("one or two?"); }, 1000);
allIterations += 1;
}
}
console.log(finalCount);
console.log(i);
}
没有无限循环,与之前的 运行 相比,您的代码可能只是随机地进行了更多次迭代。您有时会增加 finalCount
,这与 for
循环的条件有关。
看起来像无限循环的是您 运行 相当多的 setIntervals 并且从不清除它们。但是如果你仔细检查你的控制台,你基本上会在调用该函数后立即看到最后两个日志语句的两个输出。一秒钟之后,您开始看到无数个“一个”和“一个或两个?”。
quester2()
0
1
one or two?