Alguém me disse que quando você usa setTimeout
você deve limpar com clearTimeout
. Eu posso entender antes que o tempo limite acabe, mas por que depois? Ou não é verdade?
fonte
Alguém me disse que quando você usa setTimeout
você deve limpar com clearTimeout
. Eu posso entender antes que o tempo limite acabe, mas por que depois? Ou não é verdade?
Não é verdade - não há mal nenhum em limpar um tempo limite após sua conclusão, mas não é necessário.
De acordo com a especificação :
Se o identificador não identificar uma entrada na lista de temporizadores ativos do objeto WindowOrWorkerGlobalScope no qual [clearTimeout] foi chamado, o método não fará nada.
Em outras palavras, é um ambiente autônomo; nada acontece e nenhum erro será gerado.
Na verdade clearTimeout
, você não precisa usar , só o usa se quiser cancelar o tempo limite que já definiu antes de acontecer.
Geralmente é mais prático utilizar clearInterval
com setInterval
porque setInterval
geralmente é executado indefinidamente.
clearTimeout
só é necessário para cancelar um tempo limite. Depois que o tempo limite for disparado, ele pode ser deixado sozinho com segurança. clearInterval
é muito mais tipicamente necessário para evitar que continue indefinidamente.
Não há razão para limpá-lo depois de concluído. Seu amigo pode ter sido confundido com setInterval
.
Não, setTimeout
para de funcionar após 1 chamada. Para parar setInterval
, entretanto, você deve usar clearInterval
. Se você criar um loop infinito de, setTimeout
então, clearTimeout
poderá ser usado.