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?

NebulaFox
źródło

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.

jmar777
źródło
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ść.

Duch Madary
źródło
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ść.

gddc
źródło
10

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

Blazemonger
źródło
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.

Trevor
źródło