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?

NebulaFox
fonte

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.

jmar777
fonte
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.

Fantasma de madara
fonte
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.

gddc
fonte
10

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

Blazemonger
fonte
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.

Trevor
fonte