我想在 2 秒后停止无休止的 while 循环,所以我尝试了下面的代码,但它仍然无休止地运行并且 setTimeout 没有被触发。 有人可以建议我应该在这段代码中做哪些更改?
let a = true
setTimeout(()=>{
a = false
},2000)
while(a){
console.log('While Loop');
}
答案 0 :(得分:0)
那是因为你的任务永远不会完成,所以微任务永远不会运行。微任务在(任何)任务完成时运行。
你看这是一个非常反模式。你也没有任何限制。即使它没有因为微任务的东西而有缺陷,它也会非常占用 CPU,每秒打印数十万次。
不过有几种方法,setinterval
或 requestAnimationFrame
浮现在脑海中。
setInterval
的简单示例/伪代码。假设您已声明 a
并使用 true
进行初始化,并在某个时刻将其设置为 false
,如您所示。
let a = true
setTimeout(()=>{
a = false
},2000)
let interval = setInterval(() => {
If (!a) {
clearInterval(interval)
return
}
console.log("looping")
}, 0)