¿Cómo funciona la función setTimeout en JavaScript?
sobes.tech AI
Respuesta de la IA
setTimeout planea la ejecución de una función o fragmento de código después de la cantidad especificada de milisegundos.
Al llamar a setTimeout, el navegador (o el entorno de ejecución de Node.js) crea un temporizador. La función pasada a setTimeout se coloca en la cola de tareas (task queue) después de que transcurre el tiempo de retardo especificado.
JavaScript es de un solo hilo. El hilo principal de ejecución (main thread) ejecuta el código de manera secuencial. Cuando el hilo principal termina las tareas actuales, revisa la cola de tareas. Si hay funciones en la cola (por ejemplo, las que se han pospuesto con setTimeout) y el hilo principal está libre, extrae la primera función de la cola y la ejecuta.
Esto significa que setTimeout(fn, 0) no garantiza la ejecución inmediata de la función fn. Se ejecutará lo antes posible, pero solo después de que finalice la ejecución actual del código en el hilo principal.
Sintaxis:
setTimeout(function, milliseconds, param1, param2, ...);
function: La función que se desea ejecutar.milliseconds: La cantidad de milisegundos antes de ejecutar la función. Si se omite, por defecto es 0.param1, param2, ...: Argumentos opcionales que se pasarán a la función al llamarla.
Ejemplo:
// Mostrará "¡Hola!" después de 2 segundos
setTimeout(function() {
console.log("¡Hola!");
}, 2000);
// Pasando argumentos
function mostrarMensaje(nombre) {
console.log("¡Hola, " + nombre + "!");
}
setTimeout(mostrarMensaje, 1000, "Mundo"); // Mostrará "¡Hola, Mundo!" después de 1 segundo
setTimeout devuelve un ID numérico del temporizador, que se puede usar para cancelar la ejecución programada con clearTimeout.
Ejemplo de uso de clearTimeout:
let timerId = setTimeout(function() {
console.log("Esta línea no se mostrará");
}, 3000);
console.log("Temporizador iniciado...");
// Cancelar el temporizador
clearTimeout(timerId);
console.log("Temporizador cancelado.");
Puntos importantes:
- La demora no está garantizada exactamente, especialmente bajo cargas altas en el hilo principal. El tiempo indicado es la demora mínima antes de colocar la función en la cola de tareas.
- En Node.js, los temporizadores son gestionados por el ciclo de eventos (event loop), similar al navegador.