如何在Javascript中的特定时间限制后停止无限while循环..?

时间:2021-08-01 14:26:20

标签: javascript

我想在 2 秒后停止无休止的 while 循环,所以我尝试了下面的代码,但它仍然无休止地运行并且 setTimeout 没有被触发。 有人可以建议我应该在这段代码中做哪些更改?

let a = true

setTimeout(()=>{
    a = false
},2000)

while(a){
    console.log('While Loop');
}

1 个答案:

答案 0 :(得分:0)

那是因为你的任务永远不会完成,所以微任务永远不会运行。微任务在(任何)任务完成时运行。

你看这是一个非常反模式。你也没有任何限制。即使它没有因为微任务的东西而有缺陷,它也会非常占用 CPU,每秒打印数十万次。

不过有几种方法,setintervalrequestAnimationFrame 浮现在脑海中。

setInterval 的简单示例/伪代码。假设您已声明 a 并使用 true 进行初始化,并在某个时刻将其设置为 false,如您所示。

let a = true

setTimeout(()=>{
    a = false
},2000)

let interval = setInterval(() => {
    If (!a) {
        clearInterval(interval)
        return
    }
    console.log("looping")
}, 0)

我推荐观看此https://youtu.be/cCOL7MC4Pl0