繁体   English   中英

JS setTimeout 在 while 循环中

[英]JS setTimeout in while loop

由于 setTimeout 在 while 循环中崩溃。

我不知道是否有办法做到这一点,但我正在尝试制作一个。 这是目前为止的样子。

<script>
var send = true;
function sendit()
{
    alert("test");
    return true;
}
while(true)
{
    if(send == true)
    {
        send = false;
        setTimeout(function(){
            if(sendit() == true) {
                send = true;
            }
        }, 5000);
    }
}
</script>

这种方式可以吗?

您还没有解释您希望代码做什么。 如果您希望它每 5 秒提醒“测试”一次,那么您需要:

<script>
function sendit()
{
    alert("test");
    // Call sendit() the next time, repeating
    setTimeout(sendit, 5000);
}
// Call sendit() the first time
setTimeout(sendit, 5000);
</script>

不需要循环,只需让函数重新安排自己。

我的理解是,您尝试做的相当于 Java 或 C# 等语言中的Thread.sleep(5000) JavaScript 中不存在该功能。 如果您想在函数执行后的一段时间内执行某些操作,请将其置于超时状态,但无论如何,第一个函数仍将在同一帧中完成,除非您正在执行大量工作。

目前,您的代码在sendit()返回之前设置了几乎无限次的超时。 由于 JavaScript 是单线程的,即使 20 秒过去了,它仍然不会完成您的函数,也无法开始查找需要处理的超时。 您应该做的是让超时内部设置另一个超时,并删除封闭的while(true) 正如我认为您正在寻找的那样,这可能允许无限的、周期性的行为。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM