Ao usar setTimeout, você precisa limparTimeout?


87

Alguém me disse que quando você usa setTimeoutvocê deve limpar com clearTimeout. Eu posso entender antes que o tempo limite acabe, mas por que depois? Ou não é verdade?

Respostas:


87

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.


51

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 clearIntervalcom setIntervalporque setIntervalgeralmente é executado indefinidamente.


16

clearTimeoutsó é 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.


10

Não há razão para limpá-lo depois de concluído. Seu amigo pode ter sido confundido com setInterval.


10

Não, setTimeoutpara de funcionar após 1 chamada. Para parar setInterval, entretanto, você deve usar clearInterval. Se você criar um loop infinito de, setTimeoutentão, clearTimeoutpoderá ser usado.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.