由于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>
这样可能吗?
答案 0 :(得分:2)
您尚未解释您希望代码执行的操作。如果你想让它每隔5秒发出一次“测试”警报,那么你需要这个:
<script>
function sendit()
{
alert("test");
// Call sendit() the next time, repeating
setTimeout(sendit, 5000);
}
// Call sendit() the first time
setTimeout(sendit, 5000);
</script>
不需要循环,只需让函数再次安排自己。
答案 1 :(得分:0)
我的理解是,您尝试做的事情相当于Java或C#等语言中的Thread.sleep(5000)
。 JavaScript中不存在该功能。如果你想在你的函数执行后花一些时间做一些事情,把它放在一个超时时间,但不管怎样,第一个函数仍然会在同一帧中完成,除非你正在执行一个大量的工作。
目前,您的代码在sendit()
之前设置超时,在返回之前几乎无限次。由于JavaScript是单线程的,即使经过了20秒,它仍然无法完成您的功能,无法开始查找它需要处理的超时。你应该做的就是让超时内部设置另一个超时,并删除封闭的while(true)
。这可能允许无限的,周期性的行为,因为我认为你正在寻找。