clearInterval funktioniert nicht

8

Dies ist wahrscheinlich nur ein Frust Syntaxfehler meinerseits. Aber ResizeTime wird nicht gelöscht. Der Timer läuft einfach weiter, unabhängig davon, ob Sie clearInterval mehrmals verwenden. Irgendwelche Ideen Leute? Ich habe meinen echten Code gepostet:

%Vor%

Hier ist ein Beispielprotokoll von chrome:

%Vor%

für diejenigen, die das Protokoll von chrome nicht kennen, (2596) bedeutet 2596 Vorkommen eines identischen Protokolls.

    
Fresheyeball 29.02.2012, 15:22
quelle

1 Antwort

7

Ich denke, das Übergangsereignis wird nicht ausgelöst, aber adapt event wird immer wieder ausgelöst. So ändert sich resizeTime bevor der aktive gelöscht wird. Sie können es beheben (zumindest besser machen), indem Sie das Intervall löschen, bevor Sie ein neues setzen.

%Vor%

BEARBEITEN:

Was passiert ist

  1. adapt Ereignisauslöser
  2. Ein neues Intervall wird gesetzt und die Intervall-ID wird resizeTime zugewiesen
  3. Ein neues Zeitlimit wurde festgelegt
  4. Also jetzt sind 2 Dinge aktiv - 1 Intervall, 1 Timeout
  5. Vor Ablauf der Zeitüberschreitung wird erneut adapt event trigger
  6. ausgelöst
  7. Ein neues Intervall wird gesetzt und die Intervall-ID wird resizeTime zugewiesen
  8. Wenn resizeTime überschrieben wird, geht die ID zum vorherigen Intervall verloren, aber dieses Intervall ist noch aktiv
  9. Ein neues Zeitlimit wurde festgelegt
  10. Also jetzt 4 Dinge aktiv - 2 Intervalle, 2 Timeouts
  11. Es geht weiter
  12. Nach 1000s gibt es 20 Intervalle, 20 Zeitlimits aktiv
  13. Das erste Timeout ruft die Funktion auf und löscht das Intervall, auf das der 20. Wert von resizeTime zeigt.
  14. Also noch 19 Intervalle und 19 Timeouts aktiv
  15. Es geht weiter
  16. Selbst wenn transitionevent ausgelöst wird, wird nur das letzte Intervall gelöscht

Damit Ihr Code funktioniert, sollte nach jedem transitionevent Event ein adapt vorhanden sein, aber nicht. Daher müssen wir das aktive Intervall und das aktive Zeitlimit löschen, so dass jeweils nur eines von beiden gleichzeitig aktiv ist. Wenn das Timeout endet, löscht die Funktion auch das Intervall.

    
Diode 29.02.2012, 18:51
quelle

Tags und Links