【问题标题】:How to stop endless while loop after certain time limit in Javascript..? [duplicate]如何在 Javascript 中的特定时间限制后停止无休止的 while 循环..? [复制]
【发布时间】:2021-08-01 23:12:32
【问题描述】:

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

let a = true

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

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

【问题讨论】:

    标签: javascript


    【解决方案1】:

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

    你看,这是一个相当反模式。你在那里也没有任何节流。即使它没有由于微任务的问题而存在缺陷,它也会非常消耗 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

    【讨论】:

    • 感谢您的回复。但是您能否帮我编写在 2 秒内停止打印“while 循环”的代码。
    • 只需更改该 setInterval 的 while 循环。保持你的超时。我已将您的超时添加到我的 sn-p。我正在打电话,所以可能有错别字或小错误。不过你应该让它工作。
    猜你喜欢
    • 1970-01-01
    • 2015-03-25
    • 2011-02-25
    • 1970-01-01
    • 2012-10-28
    • 2021-12-30
    • 1970-01-01
    • 2017-08-29
    • 1970-01-01
    相关资源
    最近更新 更多