1

for変数 ( i)を使用するループを含む Web サイトとスクリプトがあります。

したがって、ループは次のようになります。

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

forそのため、「停止」ボタンをクリックすると、ループをインターセプトしてすぐに停止できる関数が必要です。

私は次の機能を試しました:

1位:

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

2番目:

$('#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

forループの代わりにsetIntervalを試しましたか?

元。:

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

JS の実行を中断することはできません。できる最善の方法は、 内でループを実行しsetInterval、ボタンでその間隔をクリアすることですが、欠点は、反復ごとにページを再描画する必要があるため、せいぜい 1 秒あたり 60 回の反復が得られることです。何百万ものあなたが普通に逃げることができます。

于 2012-06-21T18:20:34.003 に答える
1

for ループはブロックされ、並行処理されます。たとえば、10 ミリ秒ごとに実行されるある種のタイムアウトを使用して for ループを使用する代わりに、これを「シミュレート」できます。ただし、これは実際には同じことを達成しているわけではありません。

コメントが言ったように、javascript (ブラウザー上) はシングル スレッドであるため、for ループに入ると、for ループが終了するまで何も起こりません。

于 2012-06-21T18:20:45.223 に答える
0

これを思い通りに行うことはできませんが、少しのオーバーヘッドでループを中断することはできます。たとえば、ループのたびにデータベース要求 (ajax) を実行して、ループを中断する必要があるかどうかを確認できます。次に、ループによってチェックされる「中断する必要がある」値を設定するボタンを設定できます。

それでも、これが意図したとおりに機能するかどうかはわかりません...

于 2012-06-21T18:22:19.587 に答える