Quando usi setTimeout devi cancellareTimeout?


88

Qualcuno mi ha detto che quando lo usi setTimeoutdevi cancellarlo con clearTimeout. Posso capire prima che scada il timeout, ma perché dopo? O non è vero?

Risposte:


87

Non è vero: non c'è nulla di male a cancellare un timeout dopo che è terminato, ma non è necessario.

Secondo la specifica :

Se handle non identifica una voce nell'elenco dei timer attivi dell'oggetto WindowOrWorkerGlobalScope su cui è stato richiamato [clearTimeout], il metodo non fa nulla.

In altre parole, è un no-op; non accade nulla e non verrà generato alcun errore.


52

In realtà non è necessario utilizzarlo clearTimeout, lo si utilizza solo se si desidera annullare il timeout già impostato prima che accada.

Di solito è più pratico usare clearIntervalcon setIntervalquanto setIntervaldi solito va a tempo indeterminato.


16

clearTimeoutè necessario solo per annullare un timeout. Dopo il timeout, può essere tranquillamente lasciato solo. clearIntervalè molto più tipicamente necessario per evitare che continui indefinitamente.


10

Nessun motivo per cancellarlo dopo che è stato completato. Il tuo amico potrebbe essere stato confuso con setInterval.


10

No, setTimeoutsmette di funzionare dopo 1 chiamata. Per fermarti setInterval, però, devi usare clearInterval. Se crei un ciclo infinito di setTimeoutallora clearTimeoutpotrebbe essere utilizzato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.