Javascript 重处理对设置超时的影响

Javascript 重处理对设置超时的影响,javascript,settimeout,Javascript,Settimeout,我正在使用setTimeout()函数,但我需要处理其中的大量数据。我正在运行一个循环,该循环执行一些计算(耗时)。如果我减少时间(此处为3s),这会在处理数据期间杀死/损坏我的应用程序,还是时间无效 <!DOCTYPE html> <html> <body> <p>Click the button to wait 3 seconds, then alert "Hello".</p> <button onclick="myFu

我正在使用setTimeout()函数,但我需要处理其中的大量数据。我正在运行一个循环,该循环执行一些计算(耗时)。如果我减少时间(此处为3s),这会在处理数据期间杀死/损坏我的应用程序,还是时间无效

<!DOCTYPE html>
<html>
<body>

<p>Click the button to wait 3 seconds, then alert "Hello".</p>

<button onclick="myFunction()">Try it</button>

<script>
var myVar;

function myFunction() {

    myVar = setTimeout(alertFunc, 3000);
}

function alertFunc() {
  var x;
  for (i=0; i<1000000000000000; i++)
  {
      x=i*i*i*i;
  }
  alert("Hello!");
}
</script>

</body>
</html>

单击按钮等待3秒钟,然后警告“你好”

试试看 var-myVar; 函数myFunction(){ myVar=setTimeout(alertFunc,3000); } 函数alertFunc(){ var x;
对于(i=0;i在超时结束后调用
setTimeout
的回调(在您的情况下为3秒)。回调做什么并不重要。但当然,您的
警报将在循环所需的3秒+后执行


我不知道您这里所说的数据损坏是什么意思。

如果问题是您不想同时运行两个alertFunc()实例,那么您必须使用某种互斥来解决这个问题


虽然示例中的计算会给出损坏的数据,但这是由于javascript中的数字只有52位(iirc)造成的精度..

用于长时间轮询任务。您是否通过AJAX获取数据?如果您减少开始数据处理的延迟,则可能AJAX调用尚未完成。是的,在我的情况下,我通过AJAX获取数据。因此,如果数据未完成,是否会导致死锁或挂起pblm或进程自动终止?