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?
źródło
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?
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.
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 clearInterval
z setInterval
ponieważ setInterval
zazwyczaj biegnie w nieskończoność.
clearTimeout
jest potrzebny tylko do anulowania limitu czasu. Po przekroczeniu limitu czasu można go bezpiecznie zostawić w spokoju. clearInterval
jest znacznie bardziej typowe, aby zapobiec jego ciągłemu w nieskończoność.
Nie ma powodu, aby go usuwać po zakończeniu. Twój przyjaciel mógł się pomylić setInterval
.
Nie, setTimeout
przestaje działać po 1 wywołaniu. Aby setInterval
jednak zatrzymać , musisz użyć clearInterval
. Jeśli utworzysz niekończącą się pętlę setTimeout
wtedyclearTimeout
mogą być wykorzystane.