【发布时间】:2021-12-31 01:21:26
【问题描述】:
此代码用于在您在文本输入中键入内容时启动一个计时器,该计时器每秒计数一次,直到达到 5 秒,然后停止。但它不断吐出0,这正在创建一个无穷无尽的while loop,导致浏览器崩溃。我确定我在这里遗漏了一些明显的东西:-/
var secondsPassed = 0;
function setTimer() {
while (secondsPassed <= 5) {
console.log(secondsPassed);
setInterval(function() { secondsPassed += 1; }, 1000);
}
}
<input type="text" onkeyup="setTimer()">
【问题讨论】:
-
setInterval不会阻止。所以你正在创建数百万个计时器 -
考虑使用带有
sleep的async-await -
@DanielA.White
sleep()? -
不是浏览器崩溃,只是陷入死循环。
-
我想使用 setTimeout 来更新您的代码,而不是 jsfiddle.net/n4jhrs95