重处理对setTimeout的影响

时间:2015-11-18 15:14:06

标签: javascript settimeout

我正在使用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>

2 个答案:

答案 0 :(得分:1)

超时结束后调用setTimeout的回调(在你的情况下为3秒)。回调的作用并不重要。但是当然,您的alert将在3秒后执行 + 循环所需的时间。

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

答案 1 :(得分:0)

如果问题是您不希望运行两个并发的alertFunc()实例,那么您必须使用某种互斥量来解决这个问题。

您的示例中的计算虽然会给出损坏的数据,但这是因为javascript中的Numbers只有52位(iirc)精度。 。