1

我有一个网站和一个带有for使用变量 () 的循环的脚本i

所以,循环看起来像这样:

var i;
for(i=start_n;i<=end_n;i++){
//function to execute
}

所以,我需要一个可以拦截for循环并在单击“停止”按钮时立即停止它的函数。

我尝试了以下功能:

第一个:

$('#btnStop').click(function(){
i=end_n;
});

第二:

$('#btnStop').click(function(){
stopLoading = true;
});

for(i=start_n;i<=end_n;i++){
if(stopLoading==true){break;}
//function to execute
}

他们都没有工作。那么,有没有办法拦截那个for循环并停止它呢?

4

4 回答 4

1

你不能中断 JS 的执行。您可以做的最好的事情是让循环在 a 内运行setInterval,并让按钮清除该间隔,但缺点是页面必须在每次迭代之间重绘,所以最好每秒获得 60 次迭代,而不是数百万您可以正常逃脱。

于 2012-06-21T18:20:34.003 回答
1

For 循环是阻塞和并发的,您可以通过使用某种超时运行的 for 循环而不是使用 for 循环来“模拟”这一点,比如说每 10 毫秒运行一次。然而,这并不会真正完成同样的事情。

就像评论说的那样,javascript(在浏览器上)是单线程的,所以一旦你进入 for 循环,在 for 循环结束之前什么都不会发生。

于 2012-06-21T18:20:45.223 回答
1

您是否尝试过 setInterval 而不是 for loop ?

前任。:

var interval = setInterval(function(){ /*do something many times*/}, 99);
$('#stop').click(function(){ clearInterval(interval); });
于 2012-06-21T18:23:09.267 回答
0

你不能真正做到你想要的,但你可以用一些开销来中断循环。例如,每次循环时,您都可以执行数据库请求(ajax)来检查循环是否应该被中断。然后你可以有一个按钮来设置循环检查的“应该中断”值。

不过,我不确定这是否会按预期工作......

于 2012-06-21T18:22:19.587 回答