Czy korzystając z setTimeout, musisz wyczyścić czas?


85

Ktoś mi powiedział, że kiedy używasz setTimeout, musisz to wyczyścić clearTimeout. Potrafię zrozumieć, zanim upłynie limit czasu, ale po co? Czy to nieprawda?

Odpowiedzi:


86

To nieprawda - nie ma nic złego w wyczyszczeniu limitu czasu po jego zakończeniu, ale nie jest to konieczne.

Zgodnie ze specyfikacją :

Jeśli uchwyt nie zidentyfikuje pozycji na liście aktywnych liczników czasu obiektu WindowOrWorkerGlobalScope, na którym wywołano [clearTimeout], metoda nic nie robi.

Innymi słowy, to nie jest operacja; nic się nie dzieje i nie zostanie wyrzucony żaden błąd.


51

W rzeczywistości nie musisz go używać clearTimeout, używasz go tylko wtedy, gdy chcesz anulować limit czasu, który został już ustawiony, zanim to się stanie.

Jest to zazwyczaj bardziej praktyczny w użyciu clearIntervalz setIntervalponieważ setIntervalzazwyczaj biegnie w nieskończoność.


16

clearTimeoutjest potrzebny tylko do anulowania limitu czasu. Po przekroczeniu limitu czasu można go bezpiecznie zostawić w spokoju. clearIntervaljest znacznie bardziej typowe, aby zapobiec jego ciągłemu w nieskończoność.


10

Nie ma powodu, aby go usuwać po zakończeniu. Twój przyjaciel mógł się pomylić setInterval.


10

Nie, setTimeoutprzestaje działać po 1 wywołaniu. Aby setIntervaljednak zatrzymać , musisz użyć clearInterval. Jeśli utworzysz niekończącą się pętlę setTimeoutwtedyclearTimeout mogą być wykorzystane.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.