moim problemem jest to, że nie mogę zatrzymać stopera.Zatrzymanie rozliczenia w funkcji rekurencyjnej
Miałem this method, aby ustawić limit czasu z tego forum. Ma przechowywać identyfikator w zmiennej globalnej. Przez przypadek dowiedziałem się, że nadal działa po tym, jak ukryłem "mydiv".
Muszę również wiedzieć teraz, czy funkcja rekursywna tworzy wiele instancji, czy tylko jeden dla limitów czasu. Ponieważ najpierw pomyślałem, że nadpisuje "var mytimer" za każdym razem. Teraz nie jestem tego taki pewien.
Jaki byłby solidny sposób, aby zatrzymać stoper?
var updatetimer= function() {
//do stuff
setTimeout(function(){updatetimer();}, 10000);
}//end function
//this should start and stop the timer
$("#mybutton").click(function(e) {
e.preventDefault();
if($('#mydiv').is(':visible')){
$('#mydiv').fadeOut('normal');
clearTimeout(updatetimer);
}else{
$('#mydiv').fadeIn('normal');
updatetimer();
}
});
dzięki Richard
powiedziałbym, że było całkiem źle - to funkcjonalne, ale nie ma sposobu, aby to anulować (ponieważ wartość setTimeout nie została przechwycona), ale jest to łatwe i nieskomplikowane w porównaniu do żądania co sekundę. To naprawdę przesadne, imho. – annakata
dziękuję, teraz nie rozumiem już mojego własnego kodu. Jaka jest korzyść z korzystania z tych anonimowych funkcji? Zobacz link –
to zupełnie inne pytanie, ponieważ odpowiedź jest dość rozległa :) – annakata