我试着打一个延迟的“一通”电话还是一个“一两个”电话?问题,但是相反,函数开始无限期地运行,尽管没有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);
}
发布于 2022-03-15 07:11:55
没有无限循环,与以前的运行相比,您的代码可能会随机地进行更多的迭代。有时会增加finalCount
,这与for
循环的条件有关。
可能看起来是无限循环的事实是,您运行了相当多的setIntervals,并且从未清除它们。但是,如果仔细检查控制台,基本上是在调用函数之后立即看到最后两个日志语句的两个输出。在那之后的一秒,你开始看到无限数量的“一”和“一或两?”。
quester2()
%0
1
一个还是两个?
https://stackoverflow.com/questions/71484461
复制相似问题