2013-04-10 8 views
5

Chcę zatrzymać pętlę w funkcji z innej funkcji w JavaScript. Oto kod, który próbowałem:Zatrzymaj pętlę w funkcji z innej funkcji w JavaScript

<a onmousedown="startLoop();" onmouseup="stopLoop();" > 
    Start loop 
</a> 

<script> 
var static loop = 1; 

function startLoop() { 
    while(loop ==1) { 
    } 
    alert("stop"); //This line is not executed 
} 

function stopLoop() { 
    loop = 2; 
} 
</script> 

Oto skrzypce: http://jsfiddle.net/A5h8k/4/

+3

nie może; JavaScript jest jednowątkowy, więc nie ma mowy, aby cokolwiek innego mogło zostać wykonane, podczas gdy twoja pętla jest. –

Odpowiedz

4

Ten var static loop = 1; jest nieważny, var loop = 1;, ale zacząć nieskończoną pętlę, więc nie będzie w stanie go zatrzymać tą drogą.

Zastosowanie setInterval zamiast

var int = self.setInterval(function(){myLoop()},100); 
function myLoop() { 
    //do stuff 
} 

function stopLoop() { 
    window.clearInterval(int); 
} 
+0

Proszę, daj mi przykład? – MHDaouas

+0

Edytowałem mój wpis –

+0

Twoja funkcja nie zostanie wywołana, jeśli masz wokół niej cytaty. Usuń cytaty, aby przekazać tę funkcję. Czy też "self" jest zmienną standardową? –

Powiązane problemy