Javascript 重处理对设置超时的影响
我正在使用setTimeout()函数,但我需要处理其中的大量数据。我正在运行一个循环,该循环执行一些计算(耗时)。如果我减少时间(此处为3s),这会在处理数据期间杀死/损坏我的应用程序,还是时间无效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
<!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或进程自动终止?