Javascript 如何更改设置超时数?

Javascript 如何更改设置超时数?,javascript,settimeout,Javascript,Settimeout,假设一个网站不断地从用户那里接收一些数据。如果它在5秒内没有收到来自用户的数据,我想让它提醒用户。 这就是我试图做到的: countDown = 5000 if(//some data received from user){ countDown = 5000 } setTimeout( function() { alert('no data in 5 seconds') }, countDown); } 它不能工作,因为它不能在每次从用户接收数据时将倒

假设一个网站不断地从用户那里接收一些数据。如果它在5秒内没有收到来自用户的数据,我想让它提醒用户。 这就是我试图做到的:

countDown = 5000

if(//some data received from user){
  countDown = 5000
}

setTimeout(
    function() {
        alert('no data in 5 seconds')
    }, countDown);
}
它不能工作,因为它不能在每次从用户接收数据时将倒计时设置为5秒,所以我该怎么做


由于来自用户的数据不断出现,我想每次运行一个新的setTimeout并销毁旧的setTimeout对性能不好。

这更像是一个检查是否有数据的递归函数。如果没有,它将生成一个在五秒钟内运行的函数。如果数据仍然不存在,请重复该过程

倒计时=5000 函数{ //当您接收数据时,将调用此函数 timeoutpunc; } 函数timeoutpunc{ 设置超时 作用{ 如果//仍然没有新数据{ 警报“5秒内无数据”; timeoutpunc; } },倒计时; }
}我想这对表演不好真的?您是否运行了性能测试来查看?这可能是最好的解决方案——不要猜测——首先要弄清楚性能损失是否真的很严重。很有可能,这是无法察觉的。运行一个新的setTimeout并销毁旧的-这就是方法。您可以使用seInterval,然后存储一个上次访问的日期时间,然后从当前时间中减去。@Keith,这不会按预期工作。假设用户在t=1s时做了一些事情。t=5s时的下一次试验将通过。之后的测试直到t=10s。因此,用户可能在t=1s和t=10s(即9s)之间没有执行任何操作,但没有显示任何警报。谢谢,我实际上最终执行了类似的操作,但在您的代码中应该有一个clearTimeout//您的超时名称以清除旧超时(如果有),然后创建新超时。向上投票