2010-11-22 12 views

Respuesta

12

No. clearTimeout solo necesita ser llamado si desea detener la ejecución de un setTimeout pendiente. Después de que se produzca setTimeout, la identificación del temporizador ya no es válida, pero afortunadamente llamar a clearTimeout con una identificación inválida del temporizador es inofensivo.

Si ve que hay pérdidas de memoria, el problema está en otro lado.

6

hay momentos en que setTimeout puede causar pérdidas de memoria ... consulte el siguiente artículo: setTimeout memory leaks

ser advertidos de que IEX tiene una sutileza liberador de memoria, sin embargo; Creo que si hace referencia a una variable DOM en un cierre de Javascript, el mecanismo de recolección se confunde y no se arruina al final de la solicitud: con el tiempo se convierte en una pérdida de memoria. Creo que es porque las variables DOM y las variables JS internas son recolectadas por dos recopiladores diferentes, y no se comunican correctamente sobre lo que ya no se usa.

Creo que se puede solucionar este problema estableciendo la variable a null:

setTimeout(function(){ 
    myFunction(parameter); 
    parameter = null 
}, myTimeout); 

Esto establece explícitamente la recolección de basura en movimiento.

Cuestiones relacionadas