我正在使用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>
答案 0 :(得分:1)
超时结束后调用setTimeout
的回调(在你的情况下为3秒)。回调的作用并不重要。但是当然,您的alert
将在3秒后执行 + 循环所需的时间。
我不知道这里的数据损坏是什么意思。
答案 1 :(得分:0)
如果问题是您不希望运行两个并发的alertFunc()实例,那么您必须使用某种互斥量来解决这个问题。
您的示例中的计算虽然会给出损坏的数据,但这是因为javascript中的Numbers只有52位(iirc)精度。 。