Mein Problem ist, dass ich einen Timer nicht stoppen kann.Stop Settimeout in rekursive Funktion
Ich hatte this method, um eine Zeitüberschreitung aus diesem Forum zu setzen. Es sollte den Identifikator in der globalen Variable speichern. Durch Zufall habe ich herausgefunden, dass es immer noch läuft, nachdem ich "mydiv" versteckt habe.
Ich muss jetzt auch wissen, ob die rekursive Funktion mehrere Instanzen oder nur eine für die Timeouts erstellt. Weil ich zuerst dachte, dass es "var mytimer" jedes Mal überschreibt. Jetzt bin ich mir nicht so sicher.
Was wäre ein solider Weg, um den Timer zu stoppen?
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();
}
});
Dank, Richard
ich würde sagen, es ist ziemlich schlecht - es ist funktional, aber Es gibt keine Möglichkeit, sie abzubrechen (weil der Wert von setTimeout nicht erfasst wird), aber das ist leicht zu beheben und trivial im Vergleich zu einer Anfrage pro Sekunde. Das ist wirklich übertrieben, imho. – annakata
danke, jetzt verstehe ich meinen eigenen Code nicht mehr. Was ist der Vorteil off diese anonymen Funktionen sowieso verwenden? Sehen Sie den Link –
das ist eine ganz andere Frage, weil die Antwort ziemlich weit reichend ist :) – annakata